我有这个数组
["Fruits > Citrus > Orange", "Accessories > Bracelets"]我需要把它变成:
{
"lvl0": ["Fruits", "Accessories"],
"lvl1": ["Fruits > Citrus", "Accessories > Bracelets"],
"lvl2": ["Fruits > Citrus > Orange"]
}你怎么用减速机处理这件事?我已经接近使用洛达什zip了,但我有点疯了
有人有这么酷的功能吗?
发布于 2022-02-27 19:09:14
也许有更好的方法,但让我解释一下我的过程。
,
reduce。在第一个If语句中,我正在初始化累加器对象中的级别。只对第一个元素访问if语句。之后,我将子数组推送到基于级别的单个数组中
在这个特定的例子中,排序甚至是不必要的,因为它已经被排序了。
let a = ["Fruits > Citrus > Orange", "Accessories > Bracelets"]
let res = a.map((el)=> el.split(" > ")).sort((a,b) => b.length-a.length).reduce((acc,curr)=>{
let levels = curr.length;
if(!Object.keys(acc).length){
for(i=0; i<levels;i++){
acc[`lvl${i}`]=[]
}
}
for(i=0; i<levels;i++){
acc[`lvl${i}`].push(curr.slice(0,i+1).join(" > "))
}
return acc;
},{})
console.log(res)
https://stackoverflow.com/questions/71287514
复制相似问题