我想用不同的键'编号'来自arr的值;
var arr = [1,2,4],
q = {},
a = { number : null };
for (i=0;i<3;i++) {
q[i] = a;
q[i].number = arr[i];
}
但是有了这个我有3个相同的对象。
我试图制作像
这样的闭包var arr = [1,2,4],
q = {},
a = { number : null };
for (i=0;i<3;i++) {
(function(number) {
q[number] = a;
q[number].number = arr[number];
})(i)
}
但结果是一样的。我做错了什么?
答案 0 :(得分:0)
您已经定义了对象a
。当您将a
写入q[i]
时,它只会写入指向此对象的指针。固定代码:
var arr = [1,2,4],
q = {};
for (i = 0; i < 3; i++) {
q[i] = {};
q[i].number = arr[i];
}
如果在这里清理:
var array = [1, 2, 4],
q = Object.create(null);
array.forEach(function(value, index) {
$.extend(q[index], {
number: value
});
});