首页 > 解决方案 > 如何在 JavaScript 中对对象键中的值进行排序

问题描述

如何仅对键“项目”中的值进行排序?

function solve(input) {
    let heroes = {};

    for (const line of input) {
        let [name, level, items] = line.split(' / ');
        if(!heroes.hasOwnProperty(name)) {
            heroes[name] = {
                level: Number(level),
                items: items
            }
        }
    }

    let inArrEntries = Object.entries(heroes)

    inArrEntries.sort((a, b) => (a[1].level - b[1].level))

    console.log(inArrEntries);
} 

输出:

[
  [ 'Hes', { level: 1, items: 'Desolator, Sentinel, Antara' } ],
  [ 'Derek', { level: 12, items: 'BarrelVest, DestructionSword' } ],
  [ 'Isacc', { level: 25, items: 'Apple, GravityGun' } ]
]

预期输出:

[
  [ 'Hes', { level: 1, items: 'Antara, Desolator, Sentinel,' } ],
  [ 'Derek', { level: 12, items: 'BarrelVest, DestructionSword' } ],
  [ 'Isacc', { level: 25, items: 'Apple, GravityGun' } ]
]

..................................................... ..................................................... ..................................................... ..................................................... .....................................

标签: javascript

解决方案


您可以遍历所有条目,拆分 items排序", ",然后加入", "

const inArrEntries = [
  [ 'Hes', { level: 1, items: 'Desolator, Sentinel, Antara' } ],
  [ 'Derek', { level: 12, items: 'BarrelVest, DestructionSword' } ],
  [ 'Isacc', { level: 25, items: 'Apple, GravityGun' } ]
];
for(const entry of inArrEntries){
     entry[1].items = entry[1].items.split(", ").sort().join(", ");
}
document.write(JSON.stringify(inArrEntries));


推荐阅读