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

标签 javascript arrays

给定数组 [{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。在您的情况下,除 GUIDentityObj["GUID"] 匹配的对象外,所有对象都将返回 true

注意:由于filter创建了一个新的数组,我们需要用新的数组对象替换旧的数组对象。这就是我们将 filter 的结果分配回 game.data.collectedItems 的原因。

关于javascript - 如何通过对象的属性从对象数组中删除特定对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28391564/

相关文章:

javascript - 如何使用三个js检查动态变化的 boolean 值

javascript - Chrome 阻止本地文件上传

javascript - 无法隐藏元素

php - 在单个浏览器中检查不同的浏览器兼容性

ruby - 从 Ruby 数组计算四分位数平均值?

php - 验证失败后重新加载页面时,保留 SQL 生成表单的原始顺序(随机)

java - 在一个 jlabel 中显示数组值

javascript - IONIC 和 angularjs : Nothing happends when using angular-ui-router in navigation component

java - 初始化自定义类数组

javascript - Angular ng-选项 : iterate over a number array for displaying content of an other array but having index chosen in ng-model