按值从对象中删除项目

时间:2018-04-30 11:05:17

标签: javascript jquery

我正在尝试从object中删除项目,我尝试了$.grepdelete,但这些都没有效果。 delete不会删除,$.grep会返回空object。如果值等于firstName

,我想删除John

var obj = {
  0: {
    firstName: "John",
    lastName: "Doe",
    age: 50,
    eyeColor: "blue"
  },
  1: {
    firstName: "John2",
    lastName: "Doe2",
    age: 51,
    eyeColor: "blue2"
  }
};

var r = "John";

// first try

//for (var firstName in obj) {
//  if (obj[firstName] === r)
//   delete obj[firstName]
//}

// second try

//var obj = $.grep(obj, function(e) {
 // return e.firstName != r;
//});


console.log(obj);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

我只是想通过值而非索引等删除它。先谢谢。

3 个答案:

答案 0 :(得分:2)

你没有正确迭代。它应该是:

for (var i in obj)
    if (obj[i].firstName == r)
        delete obj[i].firstName;

请注意,这将仅删除第一个名称属性,而不是John的整个对象。

答案 1 :(得分:0)

尝试做下划线

delete myObject.regex

http://perfectionkills.com/understanding-delete/

答案 2 :(得分:0)

根据您的对象结构。这就是我将如何做到这一点。

获取属性的值。使用forEach并进行更改。

以防万一,您之后可能需要obj

&#13;
&#13;
var obj = {
  0: {
    firstName: "John",
    lastName: "Doe",
    age: 50,
    eyeColor: "blue"
  },
  1: {
    firstName: "John2",
    lastName: "Doe2",
    age: 51,
    eyeColor: "blue2"
  }
};
 var r = Object.values(obj);
 r.forEach(function(e){
     e.firstName === "John" ? delete e.firstName : null
     
})
console.log(r)
&#13;
&#13;
&#13;