const originArr = [
{
value: 'q',
children: [
{
value: 'w',
children: [{ value: 'e' }, { value: 'r' }]
},
{
value: 't',
children: [{ value: '' }, { value: 'y' }, { value: 'u' }]
},
{ value: 'i' }
]
},
{
value: 'o'
}
];
const targetMap = new Map([
['q/w/e', undefined],
['q/t', undefined]
]);
function formatArr(arr, path) {
for (let idx = arr.length - 1; idx >= 0; idx--) {
const i = arr[idx];
let mapKey = arr[idx].value;
if (path) mapKey = `${path}${mapKey ? '/' : ''}${mapKey}`;
let flag = true;
let finish = false;
targetMap.forEach((value, key) => {
if (key === mapKey) {
finish = true;
} else {
const index = key.indexOf(mapKey);
if (flag && index === 0) flag = false;
}
});
if (finish) continue;
if (flag) {
arr.splice(idx, 1);
continue;
}
if (i.children) formatArr(i.children, mapKey);
}
}
const copyArr = JSON.parse(JSON.stringify(originArr));
formatArr(copyArr);
console.log(originArr, copyArr);
作用是根据一个 map 对象去找一个数组里面嵌套的值,表达可能不太清楚,代码能直接跑起来,输出一眼能看出来是干嘛的。求助大佬们这段代码怎么优化?感觉有很大的优化空间
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.