2017-09-19 1 views
0

オブジェクトにkey:valueを追加する必要があります。javascriptでkey:valueのペアを順序で追加するには

var a = {} 
a['first'] = [a,bunch,of,stuff] 
a['eight'] = [another,bunch,of,stuff] 
a['two'] = [more,stuff] 

今 ''

{8含む変数:最初、[、束、原料の]を[、ものの他、束、]、2:[以上、スタッフ]}

Iは

{最初た望んでいる間:[、]のものの他、束8:[、]のもの、の、束、2:[詳細、 stuff]}

私は、キーのアルファベット順に基づいていると推測しています。私が望むのと同じ順序で{#each model as |key value|}を使用してデータをhbsに表示したいので、これは問題です。

+0

が重複する可能性を](https://stackoverflow.com/questions/5467129/sort-javascript-object-by-key) –

+0

も同様です。 - https://stackoverflow.com/questions/1069666/sorting-javascript-object -by-property-value –

+0

本当にありません。私はそれを並べ替えることは望ましくない。私はそれが好きな任意の順序でそれをしたい。 –

答えて

1

ほとんどの言語のリストには、オブジェクトとセットがない順序があります。オブジェクトはキー値であり、順序はありません。

(js arrays)は、トラバースおよび突然変異操作を実行するメソッドをプロトタイプに持つリスト様オブジェクトです。 JavaScript配列の長さもその要素の型も固定されていません。配列の長さはいつでも変更でき、配列内の連続していない場所にデータを格納できるため、JavaScript配列は密であるとは保証されません。これは、プログラマがそれらをどのように使用するかに依存します。一般に、これらは便利な特性です。これらの機能は、あなたの特定の使用のために望ましいものではない場合は、あなたが、これは基本的には、アレイ内の任意の場所にデータを置くことができることを意味型付けされた配列

を使用して検討するかもしれない、そしてそれは、配列順に

var idx = []; 
idx[0] = 'hello'; 
idx[999] = 'world'; 

そうになりますあなたが探していると信じているものは、

var listOfThings = []; 
listOfThings.push({ 'first': [ 'things' ] }) 
listOfThings.push({ 'eight': [ 'stuff' ] }) 
listOfThings.push({ 'two': [ 'more'. 'things' ] }) 

です。次に、各オブジェクトのキーと値にアクセスすることができます。

0

例オブジェクトには、すでに2つのキーペアa1 & b2があります。そして、あなたは、このメソッドを使用することができ、K3を追加したいと思います:

let objData = [{"a1":10,"b2":20},{"b2":11,"a1":23}] 
Object.keys(objData).map(
function (object) { 
    // add k3 
    objData[object]["k3"] = "foo" 
}) 

次にあなたがアルファベット順にキーをソートしたい場合は、このメソッドを使用します。キーで[並び替えはJavaScriptオブジェクトの

function orderKeyAlfAsc(obj) { 
    let data = [] 
    for (var i in obj) 
     data.push(Object.keys(obj[i]).sort().reduce((r, k) => (r[k] = obj[i][k], r), {})) 
    return data 
} 

let orderedData = orderKeyAlfAsc(objData) 
関連する問題