繁体   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