[英]Confusion with javascript array.splice()
我真的很困惑。
我的理解是array.splice(startIndex, deleteLength, insertThing)
会在startIndex
处将insertThing
插入splice()
的结果并删除deleteLength
的条目? ... 所以:
var a = [1,2,3,4,5];
var b = a.splice(1, 0, 'foo');
console.log(b);
应该给我:
[1,'foo',2,3,4,5]
和
console.log([1,2,3,4,5].splice(2, 0, 'foo'));
应该给我
[1,2,'foo',3,4,5]
等等。
但出于某种原因,它只给了我一个空数组? 看一看: http : //jsfiddle.net/trolleymusic/STmbp/3/
谢谢 :)
“splice()”函数返回的不是受影响的数组,而是已删除元素的数组。 如果不删除任何内容,则结果数组为空。
splice()
修改源数组并返回已删除项的数组。 由于您没有要求删除任何项目,因此您会返回一个空数组。 它修改原始数组以插入您的新项目。 你有没有看一看它是什么? 寻找你的结果在a
。
var a = [1,2,3,4,5];
var b = a.splice(1, 0, 'foo');
console.log(a); // [1,'foo',2,3,4,5]
console.log(b); // []
在你的jsfiddle的推导,看到的结果是在a
位置: http://jsfiddle.net/jfriend00/9cHre/ 。
array.splice
函数拼接一个数组返回被删除的元素。 由于您没有删除任何内容而只是使用它来插入元素,因此它将返回空数组。
我想这就是你想要的。
var a = [1,2,3,4,5];
a.splice(1, 0, 'foo');
var b = a;
console.log(b);
我有这个问题。 “ splice() 方法通过删除或替换现有元素和/或在适当位置添加新元素来更改数组的内容。” https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
这将起作用:
var a = [1,2,3,4,5];
a.splice(1,0,'Foo');
console.log(a);
如果你想在一个函数中使用它,你可以这样做:
function placeInMiddle(arr){
arr.splice(2,0, "foo");
return arr;
}
placeInMiddle([1,2,6,7])
Mozilla 开发人员的 Array.prototype.splice() 页面比其他资源更清楚地了解 splice 方法的工作原理及其实现方式,下面简要介绍!
const months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb');
// inserts at index 1
console.log(months);
// expected output: Array ["Jan", "Feb", "March", "April", "June"]
months.splice(4, 1, 'May');
// replaces 1 element at index 4
console.log(months);
// expected output: Array ["Jan", "Feb", "March", "April", "May"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.