[英]How to remove an object from a list of nested objects in JavaScript?
[英]How to remove object from object of objects in javascript
我有一个对象如下:
let object = {
1: {id: 1, name: "One"},
2: {id: 2, name: "Two"},
3: {id: 3, name: "Three"}
}
我想删除其中之一,例如id 2
的对象
现在我使用 lodash 来做到这一点,如下所示:
forOwn(object, function(value, key) {
value.id === 2 && delete object[key]
});
这确实有效,但这是正确的方法吗?
您可以使用UnderscoreJs库
let object = {
1: {id: 1, name: "One"},
2: {id: 2, name: "Two"},
3: {id: 3, name: "Three"}
}
let newobject=_.remove(object,function(nv){
return nv.id===3;
});
上面的代码将删除 id=3 的对象并返回
{
1: {id: 1, name: "One"},
2: {id: 2, name: "Two"},
}
我认为您没有得到您正在寻找的答案,因为您可能过度简化了用例,所以很想说:
delete object[2]; // which modifies the original object
如果您的数据不是那么静态,或者您想要做一些更复杂的事情来删除某些元素,您可以执行类似以下操作:
const relevantObjects = Object.entries(object) // converts each entry to [key, value]
.filter(([k, v]) => v.id !== 2) // define the criteria to include/exclude items
.reduce((acc, [k, v]) => {
acc[k] = v;
return acc; // this function can be improved, it converts the [[k, v]] back to {k: v, k: v, ...}
}, {});
编辑:
使用 lib 或其他东西完全没问题。 凡事有利有弊,做适合自己的事情<3
我会使用一个简单的for ... in
而不是loadash
let object = { 1: {id: 1, name: "One"}, 2: {id: 2, name: "Two"}, 3: {id: 3, name: "Three"} } let deleteById = (obj,idToRemove) => { for(let key in obj){ let {id} = obj[key] | {} if(id === idToRemove){ delete obj[key] } } } deleteById(object,2) console.log(object)
这是正确的方法。 要在 JSON 中执行此操作,请执行以下操作:
var json = { ... };
var key = "foo";
delete json[key];
因此,如果您将 json 换成 object,则一切就绪。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.