a = ["same", "same", "unique"];
b = [1,2,3];
var c = {};
for (i = 0; i < a.length; i++) {
c[a[i]] = b[i];
}
console.log(c);
在控制台中,我看到Object {same: 2, unique: 3}
,2&#39;相同&#39; key已成为1,我想知道它为什么不生成Object {same: 1,same: 2, unique: 3}
?
答案 0 :(得分:2)
发生这种情况是因为:
第一个电话c['same']=1
被c['same']=2
您希望将多个值放在相同的键下,这意味着您希望将数组放在该键中而不是单个值。
所以这将解决你的问题:
a = ["same", "same", "unique"];
b = [1,2,3];
var c = {};
for (i = 0; i < a.length; i++) {
c[a[i]] ? c[a[i]].push(b[i]) : ( c[a[i]] = [ b[i] ] );
}
console.log(c);
然后查看地图的结构(c
变量):
答案 1 :(得分:0)
2'相同'键变为1
是的,一个对象不能包含两个具有相同名称的属性,因此在您的示例中,您将两次写入“same”键,第二个值(2)将覆盖第一个值(1)。
原因很简单。如果您可以使用a = { same: 1, same: 2, unique: 3 }
之类的内容,a.same
的价值是什么?
答案 2 :(得分:0)
如果需要,可以反转数组,并获得输出Object {1:same,2:same,3:unique}