javascript:将异常行为推入空数组

javascript:将异常行为推入空数组,javascript,arrays,push,Javascript,Arrays,Push,以下代码: 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); } var arr1 = [1,2,3]; var obj1

以下代码:

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);
}
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);
    }
}
我只是想知道为什么

(我现在知道以下代码:

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);
}
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);
    }
}
)

因为,
Array.prototype.push()
方法返回的是数组长度,而不是数组本身

您可能更喜欢这样:

var arr1=[1,2,3];
变量obj2={}
对于(var j=0;j{0':[0],'1':[1],'2':[2]}
//较短版本
var obj3={}
对于(var j=0;j{0':[0],'1':[1],'2':[2]}

嗯,
[]
数组相同。prototype
,没有空数组,并且您没有在
obj
中推进任何内容。第二个代码段是正确的方法,您实际上创建了一个空的arrayDid,但没有注意到第一个代码段+1确认。[1,2,3]。推(60);//4.[]推(90);//1.谢谢