2017-12-04 9 views
0

私は複数のオブジェクトを作っていますが、その後私はJSON.stringifyです。それから私はそれらをハッシュに変えています。私はすべてのプロパティを同じ順序で文字列化する必要がありますので、私のハッシュは一貫しています。たとえば:これらのオブジェクトキーは常に同じ順序になりますか?

function createObj(index, value, key) { 
    var obj = { 
     value: value, 
     index: index, 
     key: key 
    }; 

    return obj; 
}; 


console.log(JSON.stringify(createObj(1, 'blue', 'ABC'))); // => {"value":"blue","index":1,"key":"ABC"} 
console.log(JSON.stringify(createObj(2, 'red', 'DEF'))); // => {"value":"red","index":2,"key":"DEF"} 
console.log(JSON.stringify(createObj(3, 'green', 'GHI'))); // => {"value":"green","index":3,"key":"GHI"} 

は、私はいつも鍵が、私は私のcreateObj関数内のオブジェクトの上にそれらを配置したことを順番に文字列化されることを期待することはできますか?オブジェクトを作成した後は、オブジェクトにプロパティを追加しません。

この注文を保証できない場合は、この目的のためにキーの順序を保証する方法をお勧めしますか?

EDIT:私は、オブジェクトを反復処理する際のキーの順序が(for-inObject.keys)を保証するものではありませんが、注文が、それをINGのstringify保証されるだろうことを実現?

+0

[JavaScript保証オブジェクトのプロパティの注文はありますか?](0120-18753-03) –

+0

配列に貼り付けるだけです。 –

+0

@NikolaLukicはそれをどのアレイにプッシュしますか? – georgej

答えて

0

JSON.stringify()MDNECMAScript Language Specificationに記載されているドキュメントは、キーがストリング化される順序を示していません。その順番はstringnumberbooleanのようなプリミティブ型では順番に並んでいますが、オブジェクト、関数、配列などは実際には分かりません。stringifyの順番で実装するのが最も良い方法でしょう出力の100%になるようにします。

関連する問題