javascript - 需要使用更新对象返回现有数据结构
问题描述
我想在它通过检查时更新对象,但得到不同的结果。获得预期的首选方式是什么?
这是样本数据:
var abc = [
{
type: "manager",
members: [{name: 'bob'}, {name: 'rob'}]
},
{
type: "clerk",
members: [{name: 'foo'}, {name: 'bar'}]
}
];
使用此功能:
function funn() {
return abc.map((cate) => {
return cate.members.map((mem) => {
if (mem.name === 'bob') {
mem['isBob'] = true;
}
return mem;
});
});
}
我想要这种格式(预期):
[
{
type: 'manager',
members: [{ name: 'bob', isBob: true }, { name: 'rob' }],
},
{
type: 'clerk',
members: [{ name: 'foo' }, { name: 'bar' }],
},
];
实际是这样的:
[
{
members: [{ name: 'bob' }, { name: 'rob' }],
},
{
members: [{ name: 'foo' }, { name: 'bar' }],
},
];
解决方案
您只需要在members
数组中找到元素,如果存在,则添加isBob
属性。
var abc = [{
type: "manager",
members: [{
name: "bob"
}, {
name: "rob"
}],
},
{
type: "clerk",
members: [{
name: "foo"
}, {
name: "bar"
}],
},
];
const result = abc.map((obj) => {
const isExist = obj.members.find((o) => o.name === "bob");
if (isExist) isExist.isBob = true;
return obj;
});
console.log(result);
推荐阅读
- git - 在 git 中暂存文件(使用终端)时,是否有命令/快捷方式仅将某些文件添加到 INDEX?
- wordpress - 修改 Woocommerce 简码 [产品 id=""]
- java - 仅对表格中的选定行启用编辑
- webpack - 导入同一文件夹中的所有手写笔文件
- java - 谁能解释一下这个 HashMap 行为
- c++ - 我正在尝试使用 No matching function for call to 解决问题
- c# - NIC/驱动程序/OS/CLR 是否对服务器应用程序可以具有的并发请求/连接数有任何限制?
- r - fwrite(, append = TRUE) 追加错误的方式
- python - 逻辑回归获取值错误无法将字符串转换为浮点数:“?”
- c# - 百分比计算并从这些百分比输出图像 c# WPF