我想通过 splice() 从数组中删除一个对象但不能正常工作
I want remove an object from array by splice() but not working properly
我有一个 array
,我想从中删除一个 对象,
我试着用 splice()
写这个,
但是当我找到它并拼接时,我的代码删除了除找到的对象之外的所有对象。
这是我的 JavaScript 代码:
On jsfiddle
var MyArr = [{
"id": "139",
"count": 2,
},
{
"id": "138",
"count": 2,
},
{
"id": "196",
"count": 1,
},
{
"id": "122",
"count": 1,
}
]
console.log(MyArr);
var linkItemId = parent.find("a").attr("data-menu-id");
var indexItem = MyArr.findIndex(x => x.id == linkItemId);
for (var i = 0; i < MyArr.length; i++) {
if (linkItemId == MyArr[i].id) {
//var indexItem = arr[i].index;
MyArr = MyArr.splice(indexItem,1);
break;
}
}
您可以使用 findIndex()
从阵列中找到可移除的项目,然后应用拼接。
var MyArr=[{id:"139",count:2,bgColor:"rgb(104, 213, 247)",link:"/inv/invmonitoringexpertgroupraghabehplanresult/index",icon:"atis-icon icon-bizPlan",name:"بررسی طرح های اقتصادی",sysname:"طرحهای اقتصادی"},{id:"138",count:2,bgColor:"rgb(104, 213, 247)",link:"/inv/invmonitoringexpertgroup/index",icon:"atis-icon icon-bizPlan",name:"کارشناسان نظارت بر طرح های اقتصادی",sysname:"طرحهای اقتصادی"},{id:"196",count:1,bgColor:"rgb(153, 132, 255)",link:"/rnt/rntrequestevaluation/report",icon:"atis-icon icon-rent",name:"گزارش کارشناسی ها",sysname:"عملیات اجارات"},{id:"122",count:1,bgColor:"rgb(218, 111, 227)",link:"/cnt/cntplan/index",icon:"atis-icon icon-contract",name:"تعریف طرح",sysname:"سرمایه گذاری و اطلاعات قراردادها"}];
const itemIndex = MyArr.findIndex(item => item.id === '139');
if (itemIndex > -1) {
MyArr.splice(itemIndex, 1)
}
console.log(MyArr);
.as-console-wrapper{min-height: 100%!important; top: 0}
您也可以使用 Array.prototype.filter()
方法删除项目。过滤器将 return 一个新数组而不修改原始数组 MyArr
.
const result = MyArr.filter(item => item.id !== '139');
result
数组包含除 ID 为 139
的项目之外的所有项目。
- 您必须将
deleteCount
指定为 1。
splice
的return值是删除的元素(不重新分配给MrArr
)
MyArr.splice(indexItem, 1);
我有一个 array
,我想从中删除一个 对象,
我试着用 splice()
写这个,
但是当我找到它并拼接时,我的代码删除了除找到的对象之外的所有对象。
这是我的 JavaScript 代码: On jsfiddle
var MyArr = [{
"id": "139",
"count": 2,
},
{
"id": "138",
"count": 2,
},
{
"id": "196",
"count": 1,
},
{
"id": "122",
"count": 1,
}
]
console.log(MyArr);
var linkItemId = parent.find("a").attr("data-menu-id");
var indexItem = MyArr.findIndex(x => x.id == linkItemId);
for (var i = 0; i < MyArr.length; i++) {
if (linkItemId == MyArr[i].id) {
//var indexItem = arr[i].index;
MyArr = MyArr.splice(indexItem,1);
break;
}
}
您可以使用 findIndex()
从阵列中找到可移除的项目,然后应用拼接。
var MyArr=[{id:"139",count:2,bgColor:"rgb(104, 213, 247)",link:"/inv/invmonitoringexpertgroupraghabehplanresult/index",icon:"atis-icon icon-bizPlan",name:"بررسی طرح های اقتصادی",sysname:"طرحهای اقتصادی"},{id:"138",count:2,bgColor:"rgb(104, 213, 247)",link:"/inv/invmonitoringexpertgroup/index",icon:"atis-icon icon-bizPlan",name:"کارشناسان نظارت بر طرح های اقتصادی",sysname:"طرحهای اقتصادی"},{id:"196",count:1,bgColor:"rgb(153, 132, 255)",link:"/rnt/rntrequestevaluation/report",icon:"atis-icon icon-rent",name:"گزارش کارشناسی ها",sysname:"عملیات اجارات"},{id:"122",count:1,bgColor:"rgb(218, 111, 227)",link:"/cnt/cntplan/index",icon:"atis-icon icon-contract",name:"تعریف طرح",sysname:"سرمایه گذاری و اطلاعات قراردادها"}];
const itemIndex = MyArr.findIndex(item => item.id === '139');
if (itemIndex > -1) {
MyArr.splice(itemIndex, 1)
}
console.log(MyArr);
.as-console-wrapper{min-height: 100%!important; top: 0}
您也可以使用 Array.prototype.filter()
方法删除项目。过滤器将 return 一个新数组而不修改原始数组 MyArr
.
const result = MyArr.filter(item => item.id !== '139');
result
数组包含除 ID 为 139
的项目之外的所有项目。
- 您必须将
deleteCount
指定为 1。 splice
的return值是删除的元素(不重新分配给MrArr
)
MyArr.splice(indexItem, 1);