[英]Remove key-value pair from JSON object (React-Native js)?
[
{
id:265,
leaveType:{
id:1,
name:'Casual Leave'
},
currentProject:'parlo,',
initialDate:'2017-07-06',
finalDate:'2017-07-06',
workingDays:1,
employee:{
id:211,
name:'appu'
},
actionItems:[
{
id:2,
name:'APPROVE'
},
{
id:3,
name:'REJECT'
},
{
id:4,
name:'CANCEL'
}
],
halfDay:false
},
{
id:277,
leaveType:{
id:1,
name:'Casual Leave'
},
currentProject:'Venon,',
initialDate:'2017-07-03',
finalDate:'2017-07-04',
workingDays:2,
employee:{
id:206,
name:'malya'
},
actionItems:[
{
id:2,
name:'APPROVE'
},
{
id:3,
name:'REJECT'
},
{
id:4,
name:'CANCEL'
}
],
halfDay:false
},
{
id:285,
leaveType:{
id:1,
name:'Casual Leave'
},
currentProject:'ferrar,',
initialDate:'2017-09-25',
finalDate:'2017-09-25',
workingDays:1,
employee:{
id:68,
name:'Geena'
},
actionItems:[
{
id:2,
name:'APPROVE'
},
{
id:3,
name:'REJECT'
},
{
id:4,
name:'CANCEL'
}
],
halfDay:false
},
{
id:286,
leaveType:{
id:1,
name:'Casual Leave'
},
currentProject:'ole,',
initialDate:'2017-09-26',
finalDate:'2017-09-26',
workingDays:1,
employee:{
id:68,
name:'harry'
},
actionItems:[
{
id:2,
name:'APPROVE'
},
{
id:3,
name:'REJECT'
},
{
id:4,
name:'CANCEL'
}
],
halfDay:false
}
]
上面是一個簡單的json數組,請建議我循環刪除json數組的下面部分。下面的對象必須從數組中完全刪除。我正在做一個react-native項目,所以代碼必須在react中js。
{
id:4,
name:'CANCEL'
}
我的預期輸出如下
[
{
id:265,
leaveType:{
id:1,
name:'Casual Leave'
},
currentProject:'parlo,',
initialDate:'2017-07-06',
finalDate:'2017-07-06',
workingDays:1,
employee:{
id:211,
name:'appu'
},
actionItems:[
{
id:2,
name:'APPROVE'
},
{
id:3,
name:'REJECT'
}
],
halfDay:false
},
{
id:277,
leaveType:{
id:1,
name:'Casual Leave'
},
currentProject:'Venon,',
initialDate:'2017-07-03',
finalDate:'2017-07-04',
workingDays:2,
employee:{
id:206,
name:'malya'
},
actionItems:[
{
id:2,
name:'APPROVE'
},
{
id:3,
name:'REJECT'
}
],
halfDay:false
},
{
id:285,
leaveType:{
id:1,
name:'Casual Leave'
},
currentProject:'ferrar,',
initialDate:'2017-09-25',
finalDate:'2017-09-25',
workingDays:1,
employee:{
id:68,
name:'Geena'
},
actionItems:[
{
id:2,
name:'APPROVE'
},
{
id:3,
name:'REJECT'
}
],
halfDay:false
},
{
id:286,
leaveType:{
id:1,
name:'Casual Leave'
},
currentProject:'ole,',
initialDate:'2017-09-26',
finalDate:'2017-09-26',
workingDays:1,
employee:{
id:68,
name:'harry'
},
actionItems:[
{
id:2,
name:'APPROVE'
},
{
id:3,
name:'REJECT'
}
],
halfDay:false
}
]
這是使用for
循環的簡單解決方案。
var json = [ { id:265, leaveType:{ id:1, name:'Casual Leave' }, currentProject:'parlo,', initialDate:'2017-07-06', finalDate:'2017-07-06', workingDays:1, employee:{ id:211, name:'appu' }, actionItems:[ { id:2, name:'APPROVE' }, { id:3, name:'REJECT' }, { id:4, name:'CANCEL' } ], halfDay:false }, { id:277, leaveType:{ id:1, name:'Casual Leave' }, currentProject:'Venon,', initialDate:'2017-07-03', finalDate:'2017-07-04', workingDays:2, employee:{ id:206, name:'malya' }, actionItems:[ { id:2, name:'APPROVE' }, { id:3, name:'REJECT' }, { id:4, name:'CANCEL' } ], halfDay:false }, { id:285, leaveType:{ id:1, name:'Casual Leave' }, currentProject:'ferrar,', initialDate:'2017-09-25', finalDate:'2017-09-25', workingDays:1, employee:{ id:68, name:'Geena' }, actionItems:[ { id:2, name:'APPROVE' }, { id:3, name:'REJECT' }, { id:4, name:'CANCEL' } ], halfDay:false }, { id:286, leaveType:{ id:1, name:'Casual Leave' }, currentProject:'ole,', initialDate:'2017-09-26', finalDate:'2017-09-26', workingDays:1, employee:{ id:68, name:'harry' }, actionItems:[ { id:2, name:'APPROVE' }, { id:3, name:'REJECT' }, { id:4, name:'CANCEL' } ], halfDay:false } ] ; for(var i =0;i<json.length;i++){ actionItems = json[i].actionItems; for(var j =0;j<actionItems.length;j++){ if(actionItems[j].name === 'CANCEL'){ json[i].actionItems.splice(j,1); } } } console.log(json);
您可以映射到外部數組,然后根據actionItem name property
過濾項目
var data = [ { id:265, leaveType:{ id:1, name:'Casual Leave' }, currentProject:'parlo,', initialDate:'2017-07-06', finalDate:'2017-07-06', workingDays:1, employee:{ id:211, name:'appu' }, actionItems:[ { id:2, name:'APPROVE' }, { id:3, name:'REJECT' }, { id:4, name:'CANCEL' } ], halfDay:false }, { id:277, leaveType:{ id:1, name:'Casual Leave' }, currentProject:'Venon,', initialDate:'2017-07-03', finalDate:'2017-07-04', workingDays:2, employee:{ id:206, name:'malya' }, actionItems:[ { id:2, name:'APPROVE' }, { id:3, name:'REJECT' }, { id:4, name:'CANCEL' } ], halfDay:false }, { id:285, leaveType:{ id:1, name:'Casual Leave' }, currentProject:'ferrar,', initialDate:'2017-09-25', finalDate:'2017-09-25', workingDays:1, employee:{ id:68, name:'Geena' }, actionItems:[ { id:2, name:'APPROVE' }, { id:3, name:'REJECT' }, { id:4, name:'CANCEL' } ], halfDay:false }, { id:286, leaveType:{ id:1, name:'Casual Leave' }, currentProject:'ole,', initialDate:'2017-09-26', finalDate:'2017-09-26', workingDays:1, employee:{ id:68, name:'harry' }, actionItems:[ { id:2, name:'APPROVE' }, { id:3, name:'REJECT' }, { id:4, name:'CANCEL' } ], halfDay:false } ] var newData = data .map((ele)=>{ let newElement = Object.assign({}, ele); newElement.actionItems = newElement.actionItems.filter(actionItem => actionItem.name !== 'CANCEL'); return newElement }) console.log(newData);
首先,您需要確定數組中的匹配索引。 看起來,當您搜索一系列項目時,將需要兩個循環。
找到要刪除的零件后,只需使用Array.splice(index, 1)
即可從陣列中完全刪除密鑰。
假設您要刪除此部分
{
id:4,
name:'CANCEL'
}
來自子對象的所有actionItems
屬性。 首先遍歷對象集合,然后遍歷動作集合
for (let i = 0; i < yourMainArray.length; i++) {
let indexToDelete = -1
for (let j = 0; j < yourMainArray[i].actionItems.length; j++) {
if (yourMainArray[i].actionItems[j].name === 'CANCEL') {
indexToDelete = j
}
}
if (indexToDelete !== -1) {
yourMainArray[i].actionItems.splice(indexToDelete, 1)
}
}
由於您想在循環的同時修改數組,因此需要持有索引的引用才能刪除和刪除循環外的項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.