密钥的最小值和最大值-组

时间:2018-12-07 14:29:10

标签: javascript algorithm

按同一键分组,找到最小值和最大值。 键已订购。

[{key:1,val:2}
{key:1,val:3}
{key:1,val:4}
{key:2,val:4}
{key:2,val:21}
{key:2,val:22}]

[2,4,1,22]

事实是,键是有序的。对于实时应用程序,我有一个20000的数组。我可以循环播放每个项目并检查其分组并采取行动,但是我觉得我应该循环每个对象。可能还有其他可能的解决方案,例如选择随机索引并依靠顺序来优化代码。

任何有效的方法都适用。我提出了一些解决方案,但我有一个庞大的数据集可以传递到图表中,我需要进行优化。

1 个答案:

答案 0 :(得分:1)

您可以使用哈希表进行分组,并使用默认数组获取最小值和最大值,并映射新的最小值和最大值。

var data = [{ key: 1, val: 2 }, { key: 1, val: 3 }, { key: 1, val: 4 }, { key: 2, val: 4 }, { key: 2, val: 21 },{ key: 2, val: 1 }],
    result = Object
        .values(data.reduce(
            (r, { key, val }) =>
                (t => {
                    r[key] = ['min', 'max'].map((m, i) => Math[m](t[i], val));
                    return r;
                })
                (r[key] || [+Infinity, -Infinity]),
            {}
        ))
        .reduce((a, b) => a.concat(b));
    
console.log(result);