我正在尝试从object
中删除项目,我尝试了$.grep
和delete
,但这些都没有效果。 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>
我只是想通过值而非索引等删除它。先谢谢。
答案 0 :(得分:2)
你没有正确迭代。它应该是:
for (var i in obj)
if (obj[i].firstName == r)
delete obj[i].firstName;
请注意,这将仅删除第一个名称属性,而不是John的整个对象。
答案 1 :(得分:0)
答案 2 :(得分:0)
根据您的对象结构。这就是我将如何做到这一点。
获取属性的值。使用forEach
并进行更改。
以防万一,您之后可能需要obj
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;