使用变量属性值从javascript数组中删除对象

时间:2017-07-01 13:21:49

标签: javascript arrays slice splice

大家都非常喜欢javascript,并希望能帮助解决这个问题。基本上我要做的是从我的数组中删除一个对象。该数组包含以下对象:y = [{123:1},{321:2},{234:3}] id = 123; for (var i = 0; i < y.length; i++) if (y[i].id === id) { y.splice(i,1); } //Does not work because the first column of the object is not named "id"

我想使用对象的id删除对象,这是第一列。

我试过的是遍历数组以找到相应的id并删除它,但问题是第一列没有标记为“id”,第一列是id形式(例如123)。

任何帮助都将不胜感激。

geb.replaceAll("\\.", "")

3 个答案:

答案 0 :(得分:4)

您可以使用filter代替循环:

&#13;
&#13;
var y = [{123:1},{321:2},{234:3}]
var id = 123;

y = y.filter((obj) => !obj.hasOwnProperty(id));

console.log(y);
&#13;
&#13;
&#13;

答案 1 :(得分:2)

只需检查某个密钥:

for (var i = 0; i < y.length; i++)
  if (key in y[i]) {
    y.splice(i,1);
  }
}

答案 2 :(得分:1)

我使用两个参数(数组,对象的键)创建一个函数 在数组中使用forEach方法我检查并比较键给定键(通过参数)和对象元素中的existen键。如果是真的那么我使用splice()方法删除包含键的对象:

&#13;
&#13;
y = [{123:1},{321:2},{234:3}];

function deleteObj(arg,value){
  arg.forEach(function(element){       
    var index=arg.indexOf(element);    
    if(Object.keys(element)==value.toString()){
      arg.splice(index,1);
    }
  });
}
deleteObj(y,123);

console.log(y);
&#13;
&#13;
&#13;