[英]Javascript: Remove Value from array inside an array of Object based on key
[英]remove object inside array inside an object based on id in javascript
如標題所述,我正在嘗試根據ID刪除對象內部數組中的對象。 請在下面查看我的對象:
{"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”},我將如何處理?
要遍歷所有這些子數組,可以遍歷對象的值:
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);
}
嘗試這個
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);
我用lodash(_.remove),工作正常
var origArray = questions_list[$itemType];
_.remove(origArray, function(n){
return n.id == $itemId;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.