使用splice删除Javascript中对象数组中的位置之后的所有元素

时间:2014-07-21 09:58:46

标签: javascript arrays json

我想知道是否有一种简单的方法可以在关键位置之后拼出所有元素。

array.splice(index,howmany,item1,.....,itemX)

文档说第二个指定要删除的元素数量的元素是必填字段,是否需要注意这一点?

P.S - 不寻找正常的蛮力解决方案。

3 个答案:

答案 0 :(得分:9)

  

我想知道是否有一种简单的方法可以在json数组中的键位之后拼接出所有元素。

如果在关键位置之后是所有元素,则执行以下操作:

array.length = theKeyPosition;

E.g:

var array = [
    "one",
    "two",
    "three",
    "four",
    "five",
    "six"
];
var theKeyPosition = 3;
array.length = theKeyPosition; // Remove all elements starting with "four"

如果您还不知道关键位置,在ES5环境中(并且可以对其进行填充),您可以使用filter

var array = [
    "one",
    "two",
    "three",
    "four",
    "five",
    "six"
];
var keep = true;
array = array.filter(function(entry) {
    if (entry === "four") {
        keep = false;
    }
    return keep;
});

这是使用字符串,但您可以轻松地为您的对象数组更改if (entry === "four") {if (entry.someProperty === someValue) {

答案 1 :(得分:0)

尝试此方法,删除数组中的所有对象

array.splice(0, array.length);

答案 2 :(得分:0)

第二个参数实际上对于Array.prototype.splice()是可选的,并且仅使用第一个参数就可以实现所需的行为。

例如(从接受的答案中复制):

const array = [
    "one",
    "two",
    "three",
    "four",
    "five",
    "six"
];
const theKeyPosition = 3;
array.splice(theKeyPosition+1); // Remove all elements starting with "four"
console.log(array);

但是,我仍然更喜欢设置length属性,因为它应该更快(我找不到JSPerf结果,请在这里帮助我)。

MDNmy other answer上了解有关类似问题的更多信息。