如何从JavaScript中的数组中删除元素?
var arr = [1,2,3,5,6];
我想删除数组的第一个元素,使其成为:
var arr = [2,3,5,6];
要扩展这个问题,如果我想删除数组的第二个元素,以便它变成:
var arr = [1,3,5,6];
为了更灵活的解决scheme,使用splice()
函数。 它允许您删除基于索引值的数组中的任何项目:
var indexToRemove = 0; var numberToRemove = 1; arr.splice(indexToRemove, numberToRemove);
shift()
非常适合您的情况。 shift()
从数组中移除第一个元素并返回该元素。 这个方法改变了数组的长度。
array = [1, 2, 3, 4, 5]; array.shift(); // 1 array // [2, 3, 4, 5]
Array.prototype.shift
方法从数组中移除第一个元素,并返回它。 它修改了原始数组。
var a = [1,2,3] // [1,2,3] a.shift() // 1 a //[2,3]
arr.slice(begin[,end])
是非破坏性的,拼接和移位会修改你的原始数组
写了一篇关于在Javascript数组中的任意位置插入和删除元素的小文章。
这里是从任何位置删除元素的小片段。 这扩展了JavaScript中的Array类,并添加了remove(index)方法。
// Remove element at the given index Array.prototype.remove = function(index) { this.splice(index, 1); }
因此,要删除示例中的第一个项目,请调用arr.remove():
var arr = [1,2,3,5,6]; arr.remove(0);
要删除第二个项目,
arr.remove(1);
这里有一个小小的文章 ,介绍了Array类的插入和删除方法。
从本质上来说,这与使用拼接的其他答案没有什么不同,但名称splice
是非直观的,如果您在应用程序中都有这样的调用,那只会使代码更难读取。
也许这样的事情:
arr=arr.slice(1);
如果你想删除一个或多个数组的元素取决于其内容和/或其位置 。
你可以使用js filter
数组function。
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/filter 。
删除第一个元素 :
// Not very useful but it works function removeFirst(element, index) { return index > 0; } var arr = [1,2,3,5,6].filter(removeFirst); // [2,3,4,5,6]
删除第二个元素 :
function removeSecond(element, index) { return index != 1; } var arr = [1,2,3,5,6].filter(removeSecond); // [1,3,4,5,6]
删除奇怪的元素 :
function removeOdd(element, index) { return !(element % 2); } var arr = [1,2,3,5,6].filter(removeOdd); [2,4,6]
Array.splice()
有一个有趣的属性,不能用它去除第一个元素。 所以,我们需要诉诸
function removeAnElement( array, index ) { index--; if ( index === -1 ) { return array.shift(); } else { return array.splice( index, 1 ); } }