javascript - JS如何在forEach循环中从数组中删除对象?
问题描述
我有一个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
具有 key的内容,其余数据应按原样保留。所以预期的最终结果是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);
推荐阅读
- html - 将粉色 div 放在银色 div 后面,确保我们可以在完成后悬停粉色 div
- java - 如何从 jHipster 中的 SecurityContextHolder 检索自定义 UserDetails?
- c# - reader.EndOfStream 未检测到流的结尾
- swift - 为什么我的 Objective-C 块在传递给 Swift 函数时没有显示?
- meteor - 覆盖或禁用 DEFAULT_PASSWORD_ENROLL_TOKEN_EXPIRATION_DAYS?
- macos - 什么是英特尔 MKL 致命错误:无法加载 libmkl_core.dylib。在 MacOs 中运行 pyspark 时?
- html - 如何设置全角内容的最大宽度
没有单独的 元素? - python-3.x - AttributeError:“客户端”对象没有属性“命令”
- javascript - 如何修复:导致页面刷新的脚本(返回 false;不起作用)
- python - 传统方式调用函数效果好,gui tkinter调用函数抛出异常