删除数组元素

时间:2019-12-28 12:49:10

标签: javascript jquery arrays

如果BOOK_COPY_IDid在第0个索引处都相等,则我的整个数组将为空。如果我放回车键,它也会被删除。

这是我的代码:

var i = 0;
    while(i < bookLoop.length)
    {
        if(parseInt(bookLoop[i].BOOK_COPY_ID) == parseInt(id))
        {
           bookLoop.splice(i);           
        }
        i++;
    }

4 个答案:

答案 0 :(得分:2)

您缺少splicevar newArray = bookLoop.filter(function(value){ return parseInt(value.BOOK_COPY_ID) == parseInt(id); }); 参数。否则,它将删除索引之后的所有元素:

deleteCount

在拼接时,您也不应增加bookLoop.splice(i, 1); ,因为您删除了索引:

i

答案 1 :(得分:1)

根据文档:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

如果不指定第二个参数.getOrThrow(Duration.ofSeconds(10)) ,它将删除从当前位置到数组末尾的所有项目。

因此,您的代码应如下所示:

deleteCount

另一种不错的方法是本文中提到的方法之一:https://love2dev.com/blog/javascript-remove-from-array/

var i = 0;
while(i < bookLoop.length)
{
    if(parseInt(bookLoop[i].BOOK_COPY_ID) == parseInt(id))
    {
       bookLoop.splice(i, 1);           
    } else {

        i++;
    }
}

答案 2 :(得分:1)

您忘记添加第二个参数(deleteCount)

  

如果省略deleteCount,或者其值等于或大于   array.length-开始(即,等于或大于   数组中剩余的元素数量(从start开始),然后是所有   从数组开头到结尾的元素将被删除。

详细了解array.splice

var id = "123";

var bookLoop = [
  { BOOK_COPY_ID: "123" },
  { BOOK_COPY_ID: "456" },
  { BOOK_COPY_ID: "789" }
];

var i = 0;

while (i < bookLoop.length) {
  if (parseInt(bookLoop[i].BOOK_COPY_ID) == parseInt(id)) {
    bookLoop.splice(i, 1);
  } else { i++; }
}
console.log(bookLoop);

答案 3 :(得分:1)

while循环有点笨拙。我会使用Array.prototype.filter()。这是ES6版本。

let new_bookLoop = bookLoop.filter(b => (b.BOOK_COPY_ID) != parseInt(id))

对于E5,您可以使用:

let new_bookLoop = bookLoop.filter(function(b) { return b.BOOK_COPY_ID != parseInt(id); }
相关问题