0

根据http://www.hunlock.com/blogs/Mastering_Javascript_Arrays,这是我一直用作拼接数组的参考,

// Insert without deleting.
myArray=[1,2,3,4,5,6,7,8,9,10];
newArray = myArray.splice(5,0, '*');
newArray = myArray.splice(4,0, '*');
document.writeln(myArray);  // outputs: 1,2,3,4,*,5,*,6,7,8,9,10

但是,在我的代码中,我有:

var myArray=[1,2,3,4,5,6,7,8,9,10];
var newArray = myArray.splice(5,0, '*');
console.log(newArray);

输出是 []

此外,我注意到 myArray 似乎随着 .splice 调用而改变,即使它被分配给 newArray。

1)这是Firefox的错误吗?2) 有没有更好的方法来创建一个添加了 1 个元素的新数组?

提前致谢!

编辑:刚刚注意到我在控制台记录了一些与示例不同的东西......我的问题的第二部分仍然适用 - 我最近的尝试是:

var ints = [91, 44, 67, 80, 91, 52, 68, 50, 50, 32];
var weights = ints;
console.log(weights);
weights = weights.splice(1, 0, 'hey');
console.log(weights);

最终结果仍然是 []

4

1 回答 1

1

Splice 返回删除的元素并修改旧的。您正在分配返回的元素(一个空数组)而不是 myArray。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice

尝试类似的东西

var arrayOne = [1,2,3,4,5];
    arrayTwo = arrayOne.slice(0);

arrayTwo.splice(3,0,'Added')

console.log(arrayOne, arrayTwo); // [1, 2, 3, 4, 5] [1, 2, 3, "Added", 4, 5]
于 2011-05-09T14:54:10.737 回答