这可能很明显,但为什么在为这个javascript数组添加键值对时,我没有得到预期的JSON字符串?
下一步:代码显示,我实际上希望在对象中有两个数据集。
jsFiddle here - Weird, at moment only "works" in Chrome
var myKey = "123", myVal="Car";
var arrSummat = new Array();
$('#mybutt').click(function(){
arrSummat["987"] = "Boat";
//arrSummat[myKey] = myVal;
var test = JSON.stringify(arrSummat);
alert(test);
});
答案 0 :(得分:5)
在JavaScript中构建关联数组*或哈希映射或对象可能不是非常明显。首先,一切都是最终的对象,因此与关联数组一起使用的语法对于不是"关联数组"的所有内容都是有效的。这可能是出现混乱的地方。首先让我们解决手头的问题。您可能想要使用对象而不是数组:
arrSummat = {};
arrSummat["987"] = "Boat";
console.log(JSON.stringify(arrSummat)); // => {"987":"Boat"}
在运行小提琴时(在Chrome中)我几乎得到一个包含986 null
个值的数组,然后是"Boat"
(我可能错了,我没有算上{{1}在警报中)。
既然你已经解决了原始问题,我想指出你可能想要开始做的两件事:
首选objets和数组的简写语法。这两个例子在功能上是相同的,但你应该更喜欢第二个用于大多数目的。
null
与:
相同var myArr = new Array();
var myObj = new Object();
速记甚至可以带有一些基本值:
var myArr = [];
var myObj = {};
其次,永远不要将var myArr = [1, 2, 3];
var myObj = {one: "1", two: "2"};
对象用作数组以外的任何对象。这样做在语法上是有效的,但它会产生意想不到的结果(正如你在这里看到的那样)。