0

在将 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]); 
       }
4

3 回答 3

4

对象中的每个键都是唯一的。因此,当您将对象(使用重复键4)转换为对象时,必须删除其中一个值。

注意:您不会将字符串转换为 JSON。该字符串包含 JSON,您可以将其转换为 JavaScript 对象!

于 2013-09-24T09:47:54.897 回答
1

如果你有你会期待什么

var a;
a = "123";
a = "456";

您希望同时拥有 123 和 456 吗?不,您希望只有 456,因为它覆盖了原始值 123。同样的事情发生在您的对象中,第二个“4”键覆盖了第一个值。

如果您需要每个键有多个值,则它需要是一个数组。它应该是什么样子

{ "4": ["123","456"] }
于 2013-09-24T09:52:39.860 回答
1
var myArray = [];
myArray[0] = 1;
console.log(myArray[0]);
myArray[0] = 2;
console.log(myArray[0]);

您希望第二个console.log打印什么?很明显2,对吧?因为,我们写入同一个索引。

同样的方式,在 JSON 数据中,456被写入之前存储的相同位置123。这就是为什么缺少第一个元素。

于 2013-09-24T09:53:13.477 回答