给定一个对象数组,我想从所有对象中返回一个具有最高值的对象。

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 }

07-28 05:49