我试图将索引及其值存储在关联数组中,但它不存储具有不同值的重复索引。当我提醒这个json值时,只显示唯一值。这是我的代码:
arr[1]="AAA";
arr[2]="BBB"
arr[3]="CCC"
arr[2]="DDD"
arr[2]="HHH"
var jsonString = JSON.stringify(arr);
alert(jsonString);
答案 0 :(得分:2)
首先,javascript没有关联索引数组的概念。您有数字索引的数组或对象。
其次,如果您尝试将数据写入已定义的给定索引(或对象上的属性),您将覆盖该值。这在任何编程语言中都很常见。
听起来您只需要重新考虑数据结构。
答案 1 :(得分:1)
JavaScript不允许重复键。当您在已设置的键中写入值时,您将覆盖它而不是创建新键。
您可以使用内部列表在键中存储多个值,如下所示:
arr[1]="AAA";
arr[2]=["BBB"];
arr[3]="CCC";
arr[2].push("DDD");
arr[2].push("HHH");
var jsonString = JSON.stringify(arr);
alert(jsonString);
如果您希望所有密钥都像这样,您可以创建一个函数来复制此行为:
function pushToKey(arr, key, value) {
var innerArr = arr[key];
if (innerArr) {
innerArr.push(value);
} else {
arr[key] = [value];
};
}
然后总是使用这个功能:
var myArr = [];
pushToKey(myArr, 1, "AAA");
pushToKey(myArr, 2, "BBB");
pushToKey(myArr, 3, "CCC");
pushToKey(myArr, 2, "DDD");
pushToKey(myArr, 2, "HHH");
这将使myArr
内的所有值都存储为数组。