给定数组 [{GUID, other properties}, ...],
如何通过 GUID(或任何对象属性)从 javascript 数组中删除特定对象?
我正在尝试使用 splice()
,
var index = game.data.collectedItems.indexOf(entityObj.GUID);
if (index > -1) {
game.data.collectedItems.splice(index, 1);
}
这行不通,因为我无法直接识别数组中的值,例如:
var array = [2, 5, 9];
var index = array.indexOf(5);
此处显示:How do I remove a particular element from an array in JavaScript?
最佳答案
我建议使用 Array.prototype.filter
函数,像这样
game.data.collectedItems = game.data.collectedItems.filter(function(currentObj){
return currentObj.GUID !== entityObj["GUID"];
});
这将遍历 game.data.collectedItems
的元素并过滤掉函数作为参数传递的项目,返回 false
。在您的情况下,除 GUID
与 entityObj["GUID"]
匹配的对象外,所有对象都将返回 true
。
注意:由于filter
创建了一个新的数组,我们需要用新的数组对象替换旧的数组对象。这就是我们将 filter
的结果分配回 game.data.collectedItems
的原因。
关于javascript - 如何通过对象的属性从对象数组中删除特定对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28391564/