如何在 JavaScript 中使用 reduce 函数?我对使用它有点困惑
How to work with reduce function in JavaScript? I'm bit confused in using it
我在使用 reduce 函数时有点困惑我有一个数组
let aa = [1,2,3,4,5,6]
我需要的输出是:
[{id:1,children:
[{id:2,children:
[{id:3,children:
[{id:4,children:
[{id:5,children:
[{id:6,children:[{}]}]
}]
}]
}]
}]
}]
我写了一个函数
let aa = [1,2,3,4,5,6]
let cc = aa.reduce((acc, val) => {
let obj = {
id: val,
children: []
}
acc.push(obj);
console.log(acc[0].children)
acc = acc[0].children
return acc
}, [])
console.log(cc);
执行后我得到空数组但是在查看第 7 行控制台时我得到一些类似的东西
请有人帮助我了解我犯了什么错误。
我们可以在 javascript
中使用 Map() 制作这棵树吗
在调用 .reduce
之前,您需要保存对 初始 外部数组的引用。然后,在调用.reduce
并传入初始值后,它会构造递归结构,然后你可以return初始值return整个结构:
const aa = [1, 2, 3, 4, 5, 6]
const result = [];
aa.reduce((acc, val) => {
acc[0] = {
id: val,
children: [{}]
};
return acc[0].children;
}, result);
console.log(result);
另一个不将结果保存到外部数组的选项是使用 reduceRight
从内部构造它:
const aa = [1, 2, 3, 4, 5, 6]
const result = aa.reduceRight((children, val) => ([{
id: val,
children
}]), [{}]);
console.log(result);
你可以结合JS数组反转和reduce方法得到如下结果
let aa = [1, 2, 3, 4, 5, 6]
let result = aa.reverse().reduce((children, id) => [{ id, children }], [{}]);
console.log(result)
我在使用 reduce 函数时有点困惑我有一个数组
let aa = [1,2,3,4,5,6]
我需要的输出是:
[{id:1,children:
[{id:2,children:
[{id:3,children:
[{id:4,children:
[{id:5,children:
[{id:6,children:[{}]}]
}]
}]
}]
}]
}]
我写了一个函数
let aa = [1,2,3,4,5,6]
let cc = aa.reduce((acc, val) => {
let obj = {
id: val,
children: []
}
acc.push(obj);
console.log(acc[0].children)
acc = acc[0].children
return acc
}, [])
console.log(cc);
执行后我得到空数组但是在查看第 7 行控制台时我得到一些类似的东西
请有人帮助我了解我犯了什么错误。
我们可以在 javascript
中使用 Map() 制作这棵树吗在调用 .reduce
之前,您需要保存对 初始 外部数组的引用。然后,在调用.reduce
并传入初始值后,它会构造递归结构,然后你可以return初始值return整个结构:
const aa = [1, 2, 3, 4, 5, 6]
const result = [];
aa.reduce((acc, val) => {
acc[0] = {
id: val,
children: [{}]
};
return acc[0].children;
}, result);
console.log(result);
另一个不将结果保存到外部数组的选项是使用 reduceRight
从内部构造它:
const aa = [1, 2, 3, 4, 5, 6]
const result = aa.reduceRight((children, val) => ([{
id: val,
children
}]), [{}]);
console.log(result);
你可以结合JS数组反转和reduce方法得到如下结果
let aa = [1, 2, 3, 4, 5, 6]
let result = aa.reverse().reduce((children, id) => [{ id, children }], [{}]);
console.log(result)