Array.reduce 将初始对象更改为当前值

Array.reduce changing initial object into current value

当我尝试将一个数组缩减为一个对象时,当我没有将初始对象设置为缩减函数之外的变量时,对象的值不断被覆盖:

relevantGroupFiles.then(function(data) {
  var results = [];
  var rawResults = data.PrimaryQueryResult.RelevantResults.Table.Rows;
  rawResults = _.map(rawResults, function(x) { return x.Cells })

  var propertiesWanted = ['Path', 'Title', 'ccaApplicationFileNumber', 'created']

  rawResults.forEach(function(item) {
    var r = propertiesWanted.reduce(function(total, current) {
      return  total[current] = _.find(item, {"Key": current}).Value
    }, {})

    results.push(r)
  })
})

当我单步执行代码时,第一次迭代 returns 这个:

total = {Path: "somePath"}哪个好,那我要加下属性.

但是在接下来的迭代中,总数变成了这个:total = "somePath"

然后我得到一个错误,因为它试图在 somePath 上设置下一个 属性,它不再是一个对象而是一个字符串?

您需要 return 总...

    var r = propertiesWanted.reduce(function(total, current) {
       total[current] = _.find(item, {"Key": current}).Value;
       return total;
    }, {})