eli*_*isa 6 javascript arrays reduce
我想为给定的数字返回类似 ['4', '42','420'] 的内容:420
我使用reduce来累积数字并使用索引来连接之前索引中的数字。前两次迭代工作正常,但在第三次迭代中,我无法思考如何处理结果,因为它是未定义的 =>[ '4', '42', '4,42undefined' ]
有什么想法吗?
function createArrayOfTiers(num) {
const onArray = String(num).split('')
onArray.reduce((acc, curr, index) => {
if (!index) return curr
const newAcc = [...acc, acc + curr[index -1]]
return newAcc
},[])
}
createArrayOfTiers(420)Run Code Online (Sandbox Code Playgroud)
如果您想收集数字的增量数字,我认为更清晰的方法是使用.map(或Array.from) 代替:在每次迭代中,将(字符串化)数字从索引 0 切片到当前索引。
function createArrayOfTiers(num) {
const strNum = String(num);
return [...strNum].map((_, i) => strNum.slice(0, i + 1));
}
console.log(createArrayOfTiers(420));Run Code Online (Sandbox Code Playgroud)
要修复现有代码,您需要访问 Accumulator 的前一个元素,而不是 的前一个元素curr(这实际上没有意义),将其乘以 10,然后添加要迭代的数字。还要确保返回构造的数组:
function createArrayOfTiers(num) {
const onArray = String(num).split('')
return onArray.reduce((acc, curr, index) => {
if (!index) return Number(curr);
return [...acc, acc[index - 1] * 10 + Number(curr)];
}, [])
}
console.log(createArrayOfTiers(420));Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |