javascript – 如何通过对象的属性从对象数组中删除特定的对象?

给定数组[{GUID,其他属性},…],

如何通过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创建了一个新的Array,我们需要用新的数组对象替换旧的数组对象.这就是为什么我们将过滤器的结果分配给game.data.collectedItems.

转载注明原文:javascript – 如何通过对象的属性从对象数组中删除特定的对象? - 代码日志