javascript - 减少功能的问题

标签 javascript reduce

我一直在尝试创建一个示例问题来测试 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/

相关文章:

javascript - ReactJS <select> 具有不区分大小写的值

python - 如何使用 map 和 reduce 在 Python 中按步骤组成函数列表

javascript - 将模式替换为\x

javascript - 需要将稳定的 HTML 和 CSS 添加到 jquery "ContentFlow"

javascript - MongoDB 安全问题

javascript - .reduce 返回 concat 而不是总和

javascript - 使用 array.reduce 方法统计重复元素

javascript - 如何将 reduce-reducers 与 combineReducers 一起使用

Hadoop集群工作

javascript - 等高JS