Javascript 如果一个属性具有特定值,则删除整个对象

Javascript 如果一个属性具有特定值,则删除整个对象,javascript,arrays,object,Javascript,Arrays,Object,我有一个对象数组,看起来像这样,但有点大: var total = [{ cost="6.00", descrip="tuna"},{ cost="5.50", descrip="cod"}]; 我需要一种从数组中删除特定完整对象的方法。是否可以根据属性的值识别对象的索引?如果是这样的话,拼接方法看起来可以工作 total.splice(x,1); 否则也许我可以用下面的方法?数组中的对象是否可以命名并与此一起使用: delete total[]; 不太确定你的问题是什么。您首先必

我有一个对象数组,看起来像这样,但有点大:

var total =   [{ cost="6.00",  descrip="tuna"},{ cost="5.50",  descrip="cod"}];
我需要一种从数组中删除特定完整对象的方法。是否可以根据属性的值识别对象的索引?如果是这样的话,拼接方法看起来可以工作

total.splice(x,1);
否则也许我可以用下面的方法?数组中的对象是否可以命名并与此一起使用:

delete total[];

不太确定你的问题是什么。您首先必须找到要删除的项目:

function findItem(arr) {
  for(var i = 0; i < arr.length; ++i) {
    var obj = arr[i];
    if(obj.cost == '5.50') {
      return i;
    }
  }
  return -1;
}

我假设数组中至少有一个对象与条件匹配。

我可能理解错误,但这不是很简单,为什么要拼接

var i = 0,
  count = total.length;

// delete all objects with descrip of tuna
for(i; i < count; i++) {
  if (total[i].descrip == 'tuna') { 
      delete total[i]
  }
}
var i=0,
计数=总长度;
//删除所有描述符为的对象
对于(i;i
此函数用于删除object.keyName==value的数组中的第一个对象

function deleteIfMatches(array, keyName, value) {
    for (i=0; i<array.length; i++) {
        if (array[i][keyName] === value) {
           return array.splice(i, 1);
        }
    }
    // returns un-modified array
    return array;
}
函数deleteIfMatches(数组、键名、值){

对于(i=0;i),除非使用冒号而不是等号,否则不会初始化对象-

您可以筛选数组,返回的数组不包含任何值,但包含通过某些测试的值

这将返回一组花费一美元或更多的项目:

var total= [{
    cost:"6.00", descrip:"tuna"
},{
    cost:"5.50", descrip:"cod"
},{
    cost:".50", descrip:"bait"
}
].filter(function(itm){
return Number(itm.cost)>= 1;
});
/*返回值:

[{
        cost:'6.00',
        descrip:'tuna'
    },{
        cost:'5.50',
        descrip:'cod'
    }
]

对于符合ES5标准的浏览器,您可以使用
filter()
。例如,删除所有成本<6的项目:

total = total.filter(function(item) {
  return item.cost < 6.0; 
});
total=total.filter(函数(项){
退货项目成本<6.0;
});
编辑:或更简洁的ES6环境版本:

total = total.filter(item => item.cost < 6.0);
total=total.filter(item=>item.cost<6.0);

您可以在对象中包含对象,这意味着您可以为对象设置名称或以某种方式对其进行索引,如果您的目的是这样的话?@tucuxi:不,在适当的位置修改参数并返回删除的元素。天哪,您是对的。我把它与slice()的返回误认为了。
total = total.filter(item => item.cost < 6.0);