返回具有来自对象数组的最高键/值对的对象

时间:2017-01-12 13:01:44

标签: javascript

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

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}

我觉得应该有一些方法来使用primes数组并减少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]
                    }    
               },{})

我不确定逻辑是否正确,而且,我也不知道如何让它返回最终对象。

3 个答案:

答案 0 :(得分:2)

小心测试:0与缺失值相同。使用reduce时,必须返回累加器对象。

我会减少对象而不是减少素数:

let finalObj = countObj.reduce((f, o)=>{
    primes.forEach(k=>{
       if (k in o && !(o[k]<f[k])) f[k]=o[k];
    });
    return f;
}, {});

答案 1 :(得分:2)

您可以检查存储的值是否大于实际值,如果不是,则将值分配给结果集。

using (var md5 = MD5.Create())
{
    using (var fStream = File.OpenRead(fFile))
    {
        string Hash = BitConverter.ToString(md5.ComputeHash(fStream));
        fStream.Close();
        return Hash;
    }       
}

使用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

答案 2 :(得分:0)

您可以像这样使用嵌套的sleep

在这种情况下,您不需要<script src="//code.jquery.com/jquery-1.11.2.min.js"></script> <script>jQuery.noConflict();</script>

foreach