[英]JS How to remove an object from array in a forEach loop?
我有一个具有以下内容的data
对象:
{
"content": {
"id": "someID",
"type": "unit",
"method": "xyz",
"blocks": [{
"key": "blue",
"data": [
"Array"
]
}, {
"key": "red",
"data": [
"Array"
]
}, {
"key": "yellow",
"data": [
"Array"
]
}, {
"key": "black",
"data": [
"Array"
]
}],
"notes": "abc"
}
}
我想删除block
具有关键yellow
,通过遍历blocks
,数据的其余部分应保留原样。 所以预期的最终结果将是
{
"content": {
"id": "someID",
"type": "unit",
"method": "xyz",
"blocks": [{
"key": "blue",
"data": [
"Array"
]
}, {
"key": "red",
"data": [
"Array"
]
}, {
"key": "black",
"data": [
"Array"
]
}],
"notes": "abc"
}
}
数据是动态的,所以我不知道会返回什么,它可能符合我的条件,也可能不匹配。
我尝试了很多方法,但到目前为止似乎没有任何效果。 我也可以使用lodash
如果更简单的话)。 这些似乎都不起作用。 任何帮助/方向表示赞赏
1. Using **delete**
const deleteUnwantedBlock = contentObj => {
const updatedData = contentObj;
const blocks = _.get(updatedData, 'blocks', []);
blocks.forEach(block => {
if (block.key.includes('yellow')) {
delete updatedData.block;
}
});
return updatedData;
};
console.log(deleteUnwantedBlock(data.content));```
2. Using rest operator:
const deleteUnwantedBlock = contentObj => {
const blocks = _.get(contentObj, 'blocks', []);
blocks.forEach(block => {
if (block.key.includes('yellow')) {
let { block, ...restOfTheData } = updatedData;
}
return { ...updatedEntry };
});
};
console.log(deleteUnwantedBlock(data.content));
您只需要filter
:
const obj = { "content": { "id": "someID", "type": "unit", "method": "xyz", "blocks": [{ "key": "blue", "data": [ "Array" ] }, { "key": "red", "data": [ "Array" ] }, { "key": "yellow", "data": [ "Array" ] }, { "key": "black", "data": [ "Array" ] }], "notes": "abc" } }; obj.content.blocks = obj.content.blocks.filter(({ key }) => key !== 'yellow'); console.log(obj);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.