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;
}, {})
当我尝试将一个数组缩减为一个对象时,当我没有将初始对象设置为缩减函数之外的变量时,对象的值不断被覆盖:
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;
}, {})