空array.slice(0).push(任何东西)是什么意思?

时间:2014-05-08 13:41:25

标签: javascript slice

我想从现有数组克隆一个新数组并推入一个元素。 不幸的是,现有的数组是空的,所以它就像:

[].slice().push(65)

上述表达式的输出为1。

为什么是1?

2 个答案:

答案 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);