给定数组{GUID,其他属性},.,
如何通过javascript数组的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?
发布于 2015-02-08 07:20:24
我建议使用Array.prototype.filter函数,如
game.data.collectedItems = game.data.collectedItems.filter(function(currentObj){
return currentObj.GUID !== entityObj["GUID"];
});这将迭代game.data.collectedItems的元素,并筛选出函数作为参数传递的项,返回false。在您的示例中,所有对象都将返回true,但GUID与entityObj["GUID"]匹配的对象除外。
注意:由于创建了一个新的filter,所以我们需要用新的数组对象替换旧的数组对象。这就是为什么我们要将filter的结果分配回game.data.collectedItems。
发布于 2015-02-08 07:36:44
这应该适用于所有浏览器:
function withoutPropVal(ary, propVal){
var a = [];
for(var i=0,l=ary.length; i<l; i++){
var o = ary[i], g = 1;
for(var n in o){
if(o[n] === propVal)g = 0;
}
if(g)a.push(o);
}
return a;
}
var newArray = withoutPropVal(yourArray, 'Object Property Value to Leave those Objects Out Here');https://stackoverflow.com/questions/28391564
复制相似问题