簡體   English   中英

如何從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM