如何筛选checked为true的对象并通过map()生成指定结构的新数组?
解决方案:过滤并转换节点数组
要实现只提取checked为true的节点,并转换成{name, id, checked}的结构,你需要先筛选符合条件的节点,再转换结构——直接用map()会遍历所有节点,无法过滤,所以可以结合filter()和map()来实现,或者用reduce()一步完成。
方法一:filter + map(直观易读)
先通过filter()筛选出checked为true的节点,再用map()转换对象结构:
let checkedNodes = nodes .filter(node => node.checked) .map(node => ({ name: node.nodeName, id: node.nodeId, checked: node.checked }));
方法二:reduce(一步完成)
用reduce()同时完成筛选和转换逻辑,减少一次数组遍历:
let checkedNodes = nodes.reduce((result, node) => { if (node.checked) { result.push({ name: node.nodeName, id: node.nodeId, checked: node.checked }); } return result; }, []);
验证结果
两种方法都会得到你期望的输出:
[ { "name": "node2", "id": 2, "checked": true }, { "name": "node4", "id": 4, "checked": true }, { "name": "node6", "id": 6, "checked": true } ]
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

