给定一个对象数组,我想从所有对象中返回一个具有最高值的对象。
let countObj = [{2:1},{2:4, 5:1},{3:3}]
let finalObj = {}
let primes = [2,3,5]
// finalObj should return {2:4, 3:3, 5:1}
我觉得应该有某种方法可以使用质数数组并减少countObj以获得所需的结果。
primes.forEach(p => countObj.reduce((a,b) =>{
if (a[p]){ //if prime no. exists as key in a
a[p] > b[p] ? //keep key/val pair in a : replace key/val pair
}else{ //if new prime is not a key in a
a[p] = b[p]
}
},{})
我不确定逻辑是否正确,而且我也不知道如何获取它以返回最终对象。
最佳答案
您可以检查存储的值是否大于实际值,如果不是,则将其分配给结果集。
var countObj = [{ 2: 1 }, { 2: 4, 5: 1 }, { 3: 3 }],
finalObj = {};
countObj.forEach(o => Object.keys(o).forEach(k => finalObj[k] > o[k] || (finalObj[k] = o[k])));
console.log(finalObj); // { 2:4, 3: 3, 5: 1 }
使用
primes
var countObj = [{ 2: 1 }, { 2: 4, 5: 1 }, { 3: 3 }],
finalObj = {},
primes = [2, 3, 5]
countObj.forEach(o => primes.forEach(k => k in o && (finalObj[k] > o[k] || (finalObj[k] = o[k]))));
console.log(finalObj); // { 2:4, 3: 3, 5: 1 }