简体   繁体   English

根据javascript中的id删除对象内部数组中的对象

[英]remove object inside array inside an object based on id in javascript

as the title say i'm trying to remove an object inside an array inside an object based on an id. 如标题所述,我正在尝试根据ID删除对象内部数组中的对象。 Please see my object below: 请在下面查看我的对象:

{"satisfied":[],
"support":
[
    {"id":187,"question":"supot1"}
],
"agree":
[
    {"id":891,"question":"asdff"},
    {"id":394,"question":"Dos"},
    {"id":495,"question":"Tres"}
],
"yesno":[],
"multichoice":
[
    {"id":785,"question":"multi1",
    "choices":["item1","item2", "item3"]},
    {"id":986,"question":"multi2",
    "choices":["item4", "item5", "item6"]}
],
"oneofmany":[]
}

For example, i'd like to delete {"id":891,"question":"asdff"}, how will i go about this? 例如,我想删除{“ id”:891,“ question”:“ asdff”},我将如何处理?

To go over all those subarrays you could iterate over the values of the object: 要遍历所有这些子数组,可以遍历对象的值:

 for(const array of Object.values(input)) {

Then in that array, search for an object that matches and splice it out if necessary: 然后在该数组中搜索匹配的对象,并在必要时将其拼接起来:

  const toFind = 891;
  const index = array.findIndex(it => it.id === toFind);
  if(index !== -1) 
    array.splice(index, 1);
 }

Try this 尝试这个

 var obj = { "satisfied":[], "support": [ {"id":187,"question":"supot1"} ], "agree": [ {"id":891,"question":"asdff"}, {"id":394,"question":"Dos"}, {"id":495,"question":"Tres"} ], "yesno":[], "multichoice": [ {"id":785,"question":"multi1","choices":["item1","item2", "item3"]}, {"id":986,"question":"multi2","choices":["item4", "item5", "item6"]} ], "oneofmany":[] } let id= {"id":891,"question":"asdff"}.id; //need to remove Object.keys(obj).forEach(function(key) { var index = obj[key].map(x => {return x.id;}).indexOf(id); if (index > -1) { obj[key].splice(index, 1); } }); console.log(obj); 

i used lodash (_.remove), works fine 我用lodash(_.remove),工作正常

  var origArray = questions_list[$itemType];
   _.remove(origArray, function(n){
          return n.id == $itemId;
  });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM