如何在JavaScript中从数组中删除元素?

411
var arr = [1,2,3,5,6];

删除数组的第一个元素

我想要删除数组的第一个元素,使其变成:

var arr = [2,3,5,6];

删除第二个元素

进一步扩展这个问题,如果我想要删除数组中的第二个元素,使其变成:

var arr = [1,3,5,6];

2
切片(起始位置,结束位置)不是“要删除多少”。 - seanjacob
2
@Ped arr.unshift() 不是删除,而是“将一个或多个元素添加到数组的开头”。 - psycho brm
1
@seanjacob,我想应该是“splice”而不是“slice”。 - Animesh Singh
12个回答

0

你也可以使用 reduce 来实现这个功能:

let arr = [1, 2, 3]

arr.reduce((xs, x, index) => {
        if (index == 0) {
            return xs
        } else {
            return xs.concat(x)
        }
    }, Array())

// Or if you like a oneliner
arr.reduce((xs, x, index) => index == 0 ? xs : xs.concat(x), Array())

-2

Array.splice()有一个有趣的属性,即不能使用它来删除第一个元素。因此,我们需要求助于

function removeAnElement( array, index ) {
    index--;

    if ( index === -1 ) {
        return array.shift();
    } else {
        return array.splice( index, 1 );
    }
}

3
Array.splice(0,1)可以移除第一个元素。根据此处和https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice,其他回答也表明了这一点。另外,为什么有人要传入-1来删除第一个元素呢?他们不应该传入0吗? - stone
@skypecakes 我不能确定splice在第0个索引上的有效性,但是这里在检查之前对索引进行了递减,所以当传入时它应该为0。 - Jake T.
是的,它肯定可以删除第一个元素。我在这里进行了测试:https://jsfiddle.net/sijpkes/d87rcLob/2/ - sijpkes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接