我是JavaScript的新手,正在寻找最佳性能的方法来将json对象中的对象中最大的五个值转化为新的对象。原始json对象为

{ a: 5, b: 87, c: 4, d: 33, e: 5, f: 99, g: 1, h: 10, i: 3, j: 43 };
我想获取的结果为:

{ b: 87, d: 33, f: 99, h: 10, j: 43 }
我知道可以通过循环检查json对象的每个项目并相互比较来完成此操作,但是我想知道Javascript中是否有更好的方法执行此操作以提高性能。

此过程本质上是迭代的,您不能避免循环,也不能避免至少一个小的内部循环。这是最小化循环的一种方法,请参见注释:

const top5 = [];
for (const key in object) {
    const value = object[key];
    // Is this value greater than an existing one?
    // (This is a small inner loop, hidden in the `findIndex` call.)
    const index = top5.findIndex(v => value > v);
    if (index !== -1) {
        // Yes, insert it into the array at that location
        // (There's a small loop hidden here too: copying later entries
        // back one place in the array)
        top5.splice(index, 0, value);
        // If the array is (now) > 5 entries, remove the last
        if (top5.length > 5) {
            top5.pop();
        }
    } else if (top5.length < 5) {
        // The value wasn't greater than an existing one, but
        // the array still needs values; add it at the end
        top5.push(value);
    }
}

请注意,top5始终始终以最大值为先,value如果它低于我们知道的最大值(数组中的第一个),请尽早删除,以最大程度地减少我们必须走的距离。