如何从数组中删除对象?
我希望从someArray中删除包含nameKristian的对象。例如:
someArray=[{name:";Kristian";,line:";2,5,10";},
{名称:“John”,行:“1,19,26,96”};
我想实现:
someArray=[{name:John";,line:1,19,26,96}];
可以使用多种方法从数组中删除项:
//1
someArray.shift();//第一个元素被移除
//2
someArray=someArray.slice(1);//第一个元素被移除
//3
someArray.splice(0,1);//第一个元素被移除
//4
someArray.pop();//最后删除的元素
//5
someArray=someArray.slice(0,someArray.length-1);//最后删除的元素
//6
someArray.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组合从数组中删除一个或多个元素,例如
//无损过滤器>;noJohn=John已删除,但someArray不会更改
让someArray=getArray();
让noJohn=someArray.filter(el=>;el.name!==“John”);
log(`let noJohn=someArray.filter(el=>;el.name!==“John”)`,
`非破坏性过滤器[noJohn]=`,格式(noJohn));
日志(`**someArray.length${someArray.length}`);
//破坏性过滤器/重新分配已移除>;某地2=
设someArray2=getArray();
someArray2=someArray2.filter(el=>;el.name!==“John”);
日志(“”,
`someArray2=someArray2.filter(el=>;el.name!==“John”)`,
`破坏性筛选/重新分配John已删除[someArray2]=`,
格式(someArray2));
日志(`**someArray2.length之后的过滤器${someArray2.length}`);
//破坏性拼接/w findIndex>;某地=
设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-after-splice${someArray3.length}`);
//如果不确定数组的内容,
//您应该首先检查findIndex的结果
设someArray4=getArray();
const indx=someArray4.findIndex(v=>;v.name==“Michael”);
某些阵列4.拼接(indx,indx>;=0?1:0);
log(“,`someArray4.splice(indx,indx>;=0?1:0)`,
`首先检查findIndex结果[someArray4]=(未删除任何内容)`,
格式(someArray4));
log(`**someArray4.length(仍应为3)${someArray4.length}`);
//--助手--
函数格式(obj){
返回JSON.stringify(obj,null,“”);
}
函数日志(…txt){
document.querySelector(“pre”).textContent+=`${txt.join(“\n”)}\n`
}
函数getArray(){
return[{name:“Kristian”,行:“2,5,10”},
{姓名:“约翰”,行:“1,19,26,96”},
{名称:“布赖恩”,行:“3,9,62,36”};
}
<;预处理>;
**结果**
</预处理>