var obj = { key: value1, key: value2}
私はそれを繰り返して、(キーと値1)と(キーと値2)のパースを取得したいと思います
単純なサイクルを使用する場合:
for (var i in obj){
console.log(obj[i])
}
私が得た: key value2 key value2
そのため、obj[i] は常に最後のキーを取得します
var obj = { key: value1, key: value2}
私はそれを繰り返して、(キーと値1)と(キーと値2)のパースを取得したいと思います
単純なサイクルを使用する場合:
for (var i in obj){
console.log(obj[i])
}
私が得た: key value2 key value2
そのため、obj[i] は常に最後のキーを取得します
JS オブジェクトのキーは一意である必要があります。
何が起こるかは次のとおりです。
var obj = {
key : value1
}
に設定obj['key']
しvalue1
ます。
その後の の宣言は、前の宣言をkey : value2
上書きします。
問題の可能な解決策:
var obj = {
key : [value1, value2]
}
for (var i in obj)
{
if (obj[i] instanceof Array)
{
for (var k; k < obj[i].length; k++)
{
console.log(obj[i][k])
}
}
else
{
console.log(obj[i]);
}
}
別の、おそらくより洗練された解決策は、データの保存方法を次のように変更することです。
var obj = [
{ key : 'SomeKey' , value : 'foo' },
{ key : 'SomeKey' , value : 'bar' },
{ key : 'SomeOtherKey', value : 'baz' }
];
これにより、同じキーを持つ複数のエントリが明らかに許可されます。クエリは、次の行に沿ってどこかで実行できます。
values = [];
for (var i = 0; i < obj.length; i++)
{
if (obj[i].key === 'SomeKey')
{
values.push(obj[i].value);
}
}
console.log(values);
これは不可能です。宣言のように:
var obj = { key: value1, key: value2}
最初に obj.key は として設定されvalue1
、2 番目の代入value1
では で書き換えられます。value2
したがって、obj.key は現在value2
です。
したがって、初期値にアクセスできません。