以下是代码:
产生了以下输出:
将给我所需的输出:
var arr1 = [1,2,3];
var obj1 = {};
for (var j = 0; j < arr1.length; j++) {
if (obj1[j.toString()])
obj1[j.toString()] = obj1[j.toString()].push(j)
else
obj1[j.toString()] = [].push(j);
}
产生了以下输出:
obj1
=> { '0': 1, '1': 1, '2': 1 }
我希望你能够友善地告诉我原因。
(我现在意识到以下代码:
var arr1 = [1,2,3];
var obj1 = {};
for (var j = 0; j < arr1.length; j++) {
if (obj1[j.toString()])
obj1[j.toString()] = obj1[j.toString()].push(j)
else {
obj1[j.toString()] = [];
obj1[j.toString()].push(j);
}
}
将给我所需的输出:
obj1
=> { '0': [ 0 ], '1': [ 1 ], '2': [ 2 ] }
)
[]
与Array.prototype
相同,没有空数组,并且您没有将任何内容推入obj
内。第二个代码片段是正确的方法,您实际上创建了一个空数组。 - adeneo