当前位置: 首页 > 面试题库 >

使用JavaScript从数组中删除对象

戚飞雨
2023-03-14
问题内容

如何从数组中删除对象?我想删除,其中包括名称的对象KristiansomeArray。例如:

someArray = [{name:"Kristian", lines:"2,5,10"},
             {name:"John", lines:"1,19,26,96"}];

我要实现:

someArray = [{name:"John", lines:"1,19,26,96"}];

问题答案:

您可以使用多种方法从数组中删除项目:

//1
someArray.shift(); // first element removed
//2
someArray = someArray.slice(1); // first element removed
//3
someArray.splice(0, 1); // first element removed
//4
someArray.pop(); // last element removed
//5
someArray = someArray.slice(0, a.length - 1); // last element removed
//6
someArray.length = someArray.length - 1; // last element removed

如果要删除position处的元素x,请使用:

someArray.splice(x, 1);

要么

someArray = someArray.slice(0, x).concat(someArray.slice(-x));

您可以使用Array.filterArray.splice结合使用Array.findIndex参见MDN从数组中删除一个或多个元素,例如

// non destructive filter > noJohn = John removed, but someArray will not change

let someArray = getArray();

let noJohn = someArray.filter( el => el.name !== "John" );

log("non destructive filter > noJohn = ", format(noJohn));

log(`**someArray.length ${someArray.length}`);



// destructive filter/reassign John removed > someArray2 =

let someArray2 = getArray();

someArray2 = someArray2.filter( el => el.name !== "John" );

log("", "destructive filter/reassign John removed > someArray2 =",

  format(someArray2));

log(`**someArray2.length ${someArray2.length}`);



// destructive splice /w findIndex Brian remains > someArray3 =

let someArray3 = getArray();

someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1);

someArray3.splice(someArray3.findIndex(v => v.name === "John"), 1);

log("", "destructive splice /w findIndex Brian remains > someArray3 =",

  format(someArray3));

log(`**someArray3.length ${someArray3.length}`);



// Note: if you're not sure about the contents of your array,

// you should check the results of findIndex first

let someArray4 = getArray();

const indx = someArray4.findIndex(v => v.name === "Michael");

someArray4.splice(indx, indx >= 0 ? 1 : 0);

log("", "check findIndex result first > someArray4 (nothing is removed) > ",

  format(someArray4));

log(`**someArray4.length (should still be 3) ${someArray4.length}`);



function format(obj) {

  return JSON.stringify(obj, null, " ");

}



function log(...txt) {

  document.querySelector("pre").textContent += `${txt.join("\n")}\n`

}



function getArray() {

  return [ {name: "Kristian", lines: "2,5,10"},

           {name: "John", lines: "1,19,26,96"},

           {name: "Brian", lines: "3,9,62,36"} ];

}


<pre>

**Results**



</pre>


 类似资料:
  • 如何从javascript变量中删除对象/数组?

  • 问题内容: 文件: 有没有办法从数组中提取特定对象?IE如何从项数组中提取ID为23的整个项对象。 我努力了: 但是我很确定我没有正确使用’pull’。据我了解,pull将从数组中拉出字段,而不是对象。 关于如何将整个对象从数组中拉出的任何想法。 另外,我尝试在mongoose / nodejs中执行此操作,也不确定这种类型的内容是否在mongoose API中,但我找不到它。 问题答案: 尝试.

  • 问题内容: 我需要从满足条件的数组中删除对象,我可以根据条件更新数组的对象,如下所示: 这正在工作 为了删除我正在这样做 但这不起作用,并给出此错误, ElasticsearchIllegalArgumentException [无法执行脚本]; 嵌套:ConcurrentModificationException; 错误:ElasticsearchIllegalArgumentException

  • 问题内容: 我有一个包含对象数组的对象。 我想知道什么是从数组中删除重复对象的最佳方法。举例来说,事物……东西将变成…… 问题答案: 一种原始方法是:

  • 问题内容: 如何从JavaScript中的数组中删除空元素? 有没有简单的方法,还是我需要遍历它并手动将其删除? 问题答案: 编辑: 大约9年前,当时没有很多有用的内置方法时,就回答了这个问题。 现在,当然,我建议您使用该方法。 请记住,此方法将为您返回 一个新数组, 其中的元素可以通过您提供给它的回调函数的条件。 例如,如果要删除或值: 例如,这将取决于您认为什么是“空”,如果您正在处理字符串,

  • 我试图删除/删除一个位于数组A中位置x的对象,这样数组A就位于另一个数组中,如下面所示: 现在让我们说我想删除对象与关键。我有一个 随叫随到 我得到的结果是这样的: 这是我的名片 我需要从这个数组中删除所需的特定元素。