我一直在尝试创建一个示例问题来测试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)
它不断返回未定义,我已经多次通过它。我唯一发现它是&#34;如果&#34;我无法解决的陈述。你看到了什么解决方案吗?
答案 0 :(得分:3)
您必须在return
回调中reduce()
累加器(或根据用例返回不同的内容)。
否则,reduce循环accumulator
的下一次迭代将是未定义的