我想从现有数组克隆一个新数组并推入一个元素。 不幸的是,现有的数组是空的,所以它就像:
[].slice().push(65)
上述表达式的输出为1。
为什么是1?
答案 0 :(得分:6)
Array#push()
returns the length of the resultant array.由于您将单个值推送到空数组,因此结果的长度确实为1.
如果要将更新的数组视为输出,则需要保存对它的引用,因为push()
不返回引用:
var arr = [].slice();
arr.push(65);
console.log(arr); // [ 65 ]
答案 1 :(得分:2)
将我的评论更改为答案:
MDN push()
: push()方法将一个或多个元素添加到数组的末尾,并返回数组的新长度。
您需要分两步完成,而不是使用该模式。
var temp = [].slice();
temp.push(65);
console.log(temp);
如果您想在一行中执行此操作,请查看concat()
var a = [1,2,3];
var b = [].concat(a,64);
console.log(b);