удалить объект внутри массива внутри объекта на основе идентификатора в JavaScript - PullRequest
2 голосов
/ 21 марта 2019

в заголовке говорится, что я пытаюсь удалить объект внутри массива внутри объекта на основе идентификатора. Пожалуйста, смотрите мой объект ниже:

{"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":[]
}

Например, я хотел бы удалить {"id": 891, "question": "asdff"}, как мне это сделать?

Ответы [ 3 ]

0 голосов
/ 21 марта 2019

Попробуйте это

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);
0 голосов
/ 21 марта 2019

я использовал lodash (_.remove), отлично работает

  var origArray = questions_list[$itemType];
   _.remove(origArray, function(n){
          return n.id == $itemId;
  });
0 голосов
/ 21 марта 2019

Чтобы просмотреть все эти подмассивы, вы можете перебрать значения объекта:

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

Затем в этом массиве найдите объект, который соответствует, и при необходимости склейте его:

  const toFind = 891;
  const index = array.findIndex(it => it.id === toFind);
  if(index !== -1) 
    array.splice(index, 1);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...