我一直在尝试创建一个示例问题来测试 javascript 中的 reduce 函数。该程序旨在从一组输入行中获取单个对象。
function generateInputs(){
var inputLines = Math.floor(Math.random() * 100)
var arr = [];
arr[0] = inputLines;
var userIDs = ["a","b","c","d","e"]
for(i=0; i<inputLines; i++){
let userID = userIDs[Math.floor(Math.random() * userIDs.length)]
let usage = Math.floor(Math.random(600))
arr.push(userID + " " + usage)
}
return arr;
}
let inputs = generateInputs()
function parseInput(line){
return line.split(" ");
}
let list = inputs.reduce(function(accumulator,inputLine){
if(typeof inputline === "string"){
let parsedInput = parseInput(inputLine);
accumulator[parsedInput[0]] = parsedInput[1];
}
}, {})
console.log(list)
它一直返回 undefined,我已经经历过好几次了。我唯一发现它是“if”语句的问题,我无法解决。你看到任何解决方案了吗?
最佳答案
您必须在 reduce()
回调中返回
累加器(或根据用例返回不同的东西)。
否则reduce循环的下一次迭代accumulator
将是undefined
关于javascript - 减少功能的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50195003/