本文介绍了使用 JavaScript 从数组中删除对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
限时送ChatGPT账号..如何从数组中删除对象?我希望从 someArray
中删除包含名称 Kristian
的对象.例如:
someArray = [{name:Kristian", lines:2,5,10"},{名称:约翰",行:1,19,26,96"}];
我想实现:
someArray = [{name:John", lines:1,19,26,96"}];
解决方案 您可以使用多种方法从数组中删除项目:
//1someArray.shift();//移除第一个元素//2someArray = someArray.slice(1);//移除第一个元素//3someArray.splice(0, 1);//移除第一个元素//4someArray.pop();//删除最后一个元素//5someArray = someArray.slice(0, someArray.length - 1);//删除最后一个元素//6someArray.length = someArray.length - 1;//删除最后一个元素
如果要删除位置 x
处的元素,请使用:
someArray.splice(x, 1);
或
someArray = someArray.slice(0, x).concat(someArray.slice(-x));
回复@chill182的评论:可以使用Array从数组中删除一个或多个元素.filter
或 Array.splice
与 Array.findIndex
结合(参见 MDN),例如
//非破坏性过滤器 >noJohn = John 被移除,但 someArray 不会改变让 someArray = getArray();让 noJohn = someArray.filter( el => el.name !== "John" );log(`let noJohn = someArray.filter( el => el.name !== "John")`,`非破坏性过滤器[noJohn] =`,格式(noJohn));log(`**someArray.length ${someArray.length}`);//破坏性过滤器/重新分配 John 已删除 >someArray2 =让 someArray2 = getArray();someArray2 = someArray2.filter( el => el.name !== "John" );日志("",`someArray2 = someArray2.filter( el => el.name !== "John" )`,`破坏性过滤器/重新分配约翰删除了[someArray2] =`,格式(someArray2));log(`**someArray2.length 过滤器 ${someArray2.length}`);//破坏性拼接/w findIndex Brian 仍然存在 >someArray3 =让 someArray3 = getArray();someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1);someArray3.splice(someArray3.findIndex(v => v.name === "John"), 1);日志("",`someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1),`,`破坏性拼接/w findIndex Brian 仍然是 [someArray3] =`,格式(someArray3));log(`**someArray3.length 拼接后 ${someArray3.length}`);//如果您不确定数组的内容,//你应该先检查findIndex的结果让 someArray4 = getArray();const indx = someArray4.findIndex(v => v.name === "Michael");someArray4.splice(indx, indx >= 0 ? 1 : 0);log("", `someArray4.splice(indx, indx >= 0 ? 1 : 0)`,`先检查 findIndex 结果 [someArray4] = (没有删除)`,格式(someArray4));log(`**someArray4.length (应该还是3) ${someArray4.length}`);//-- 助手 --函数格式(对象){返回 JSON.stringify(obj, null, " ");}功能日志(...txt){document.querySelector("pre").textContent += `${txt.join("\n")}\n`}函数 getArray() {返回 [ {name: "Kristian", lines: "2,5,10"},{名称:约翰",行:1,19,26,96"},{名称:布莱恩",行:3,9,62,36"}];}
**结果**
How can I remove an object from an array?
I wish to remove the object that includes name Kristian
from someArray
. For example:
someArray = [{name:"Kristian", lines:"2,5,10"},
{name:"John", lines:"1,19,26,96"}];
I want to achieve:
someArray = [{name:"John", lines:"1,19,26,96"}];
解决方案
You can use several methods to remove item(s) from an Array:
//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, someArray.length - 1); // last element removed
//6
someArray.length = someArray.length - 1; // last element removed
If you want to remove element at position x
, use:
someArray.splice(x, 1);
Or
someArray = someArray.slice(0, x).concat(someArray.slice(-x));
Reply to the comment of @chill182: you can remove one or more elements from an array using Array.filter
, or Array.splice
combined with Array.findIndex
(see MDN), e.g.
// non destructive filter > noJohn = John removed, but someArray will not change
let someArray = getArray();
let noJohn = someArray.filter( el => el.name !== "John" );
log(`let noJohn = someArray.filter( el => el.name !== "John")`,
`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("",
`someArray2 = someArray2.filter( el => el.name !== "John" )`,
`destructive filter/reassign John removed [someArray2] =`,
format(someArray2));
log(`**someArray2.length after filter ${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("",
`someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1),`,
`destructive splice /w findIndex Brian remains [someArray3] =`,
format(someArray3));
log(`**someArray3.length after splice ${someArray3.length}`);
// 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("", `someArray4.splice(indx, indx >= 0 ? 1 : 0)`,
`check findIndex result first [someArray4] = (nothing is removed)`,
format(someArray4));
log(`**someArray4.length (should still be 3) ${someArray4.length}`);
// -- helpers --
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 从数组中删除对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
更多推荐
[db:关键词]
发布评论