[英]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.