Ste*_*per 1 javascript arrays each object splice
我一直在努力工作一天,实际上是整天搜索整个stackoverflow和google以尝试解决此问题,但是我很绝望。我已经尝试了数十种解决方案,但似乎都无法解决...
我有一个对象数组,其中每个对象都有一个名为pid且具有特定值的键。现在,我想删除所有具有相同,特定pid值的对象。
我已经尝试了
forEach, filter, $.each, $.grep许多其他功能来尝试解决此问题,但所有这些功能均未成功(或者我每次都做错了什么?)
简而言之,我想删除每个具有特定pid值的对象。我当前的代码是:
$.each(cart, function(i){
if(cart[i].pid === pid){
cart.splice(i,1);
}
});
Run Code Online (Sandbox Code Playgroud)
但这总是抛出:无法读取未定义的属性pid
其他函数仅删除(随机?)数量的对象,但数组中仍有一些多余的pid值。
我不必一定要坚持使用该$.each功能,因此非常感谢任何解决方案。
对象数组:
[{"id":1523898500862,"amm":1,"type":"t","name":"bluecheese","pid":1523898494726,"cost":0.5},{"id":1523898501937,"amm":1,"type":"t","name":"edam","pid":1523898494726,"cost":0.5},{"id":1523898505766,"amm":1,"type":"t","name":"mozzarella","pid":1523898494726,"cost":1}]
Run Code Online (Sandbox Code Playgroud)
如您所见,所有三个对象都具有相同的pid值,因此我想根据该pid将其全部删除
filter()是您的解决方案。它以回调作为参数,决定是否应将元素保留在数组中并返回过滤后的数组。
function remove(arr, pid) {
return arr.filter(e => e.pid !== pid);
}
let arr = [{ pid: 1 }, { pid: 2 }];
console.log("Removed pid:1", remove(arr, 1));
console.log("Removed pid:2", remove(arr, 2));
console.log("Removed pid:3", remove(arr, 3));
let yourArr = [{
"id": 1523898500862,
"amm": 1,
"type": "t",
"name": "bluecheese",
"pid": 1523898494726,
"cost": 0.5
}, {
"id": 1523898501937,
"amm": 1,
"type": "t",
"name": "edam",
"pid": 1523898494726,
"cost": 0.5
}, {
"id": 1523898505766,
"amm": 1,
"type": "t",
"name": "mozzarella",
"pid": 1523898494726,
"cost": 1
}];
console.log("Removed from your array", remove(yourArr, 1523898494726));Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2662 次 |
| 最近记录: |