当我尝试将数组缩减为一个对象时,当我没有将初始对象设置为reduce函数之外的变量时,对象的值会不断重写:
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)
})
})
当我单步执行代码时,第一次迭代会返回:
total = {Path: "somePath"}
这很好,然后我想添加下一个属性。
但是接下来的迭代,总变成了这个:total = "somePath"
然后我收到一个错误,因为它试图在somePath
上设置下一个属性,它不再是一个对象而是一个字符串?
答案 0 :(得分:1)
你需要返回总数......
var r = propertiesWanted.reduce(function(total, current) {
total[current] = _.find(item, {"Key": current}).Value;
return total;
}, {})