在将JSON字符串转换为对象后的以下代码中,第二个控制台语句仅为我提供了忽略第一个元素的最后一个元素。为什么?我怎样才能获得第一个元素?
var key_val_pair = keyvalues;
console.log(key_val_pair); //{"4":"123","4":"456"}
key_val_pair = JSON.parse(key_val_pair);
console.log(key_val_pair); // {"4":"456"}
for(var entry in key_val_pair)
{
console.log(entry);
console.log(key_val_pair[entry]);
}
答案 0 :(得分:2)
对象中的每个键都是唯一的。因此,当您将对象(使用重复键4
)转换为对象时,必须删除其中一个值。
注意:您不会将字符串转换为JSON。该字符串包含JSON,您将其转换为JavaScript对象!
答案 1 :(得分:1)
如果你有
,你会有什么期望?var a;
a = "123";
a = "456";
你期望同时拥有123和456吗?不,你希望它只有456,因为它会覆盖123的原始值。同样的事情发生在你的对象中,第二个“4”键会覆盖第一个值。
如果每个键需要多个值,那么它需要是一个数组。应该是什么样的
{ "4": ["123","456"] }
答案 2 :(得分:1)
var myArray = [];
myArray[0] = 1;
console.log(myArray[0]);
myArray[0] = 2;
console.log(myArray[0]);
您希望第二个console.log
打印什么?显然,2
,对吧?因为,我们写入相同的索引。
同样,在JSON数据中,456
被写入先前存储123
的同一位置。这就是为什么缺少第一个元素。