Сортировка внутри вложенного объекта - PullRequest
0 голосов
/ 12 апреля 2020

Я JS новичок и пытаюсь отсортировать вложенный объект, т.е. ЧАСТИ, в порядке возрастания на основе пар значений ключа SUFFIX, как показано:

Object: {
ID: 65,
MAIN: {ID: "GR", VALUE: 45},
PARTS:{
       0:{CODE: "GR3", PREFIX: "GR", SUFFIX: 3, YEAR: 3},
       1:{CODE: "GR4", PREFIX: "GR", SUFFIX: 4, YEAR: 2},
       2:{CODE: "GR1", PREFIX: "GR", SUFFIX: 1, YEAR: 5},
       3:{CODE: "GR2", PREFIX: "GR", SUFFIX: 2, YEAR: 4}
}
}

Ожидаемый результат:

Object: {
ID: 65,
MAIN: {ID: "GR", VALUE: 45},
PARTS:{
       0:{CODE: "GR1", PREFIX: "GR", SUFFIX: 1, YEAR: 5},
       1:{CODE: "GR2", PREFIX: "GR", SUFFIX: 2, YEAR: 4},
       2:{CODE: "GR3", PREFIX: "GR", SUFFIX: 3, YEAR: 3},
       3:{CODE: "GR4", PREFIX: "GR", SUFFIX: 4, YEAR: 2}
}
}

Любые предложения, как я могу получить желаемый результат.

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

Вы можете использовать values для получения ЧАСТЕЙ и сортировки, после этого используйте assign для преобразования массива в объект.

let obj = {
ID: 65,
MAIN: {ID: "GR", VALUE: 45},
PARTS:{
       0:{CODE: "GR3", PREFIX: "GR", SUFFIX: 3, YEAR: 3},
       1:{CODE: "GR4", PREFIX: "GR", SUFFIX: 4, YEAR: 2},
       2:{CODE: "GR1", PREFIX: "GR", SUFFIX: 1, YEAR: 5},
       3:{CODE: "GR2", PREFIX: "GR", SUFFIX: 2, YEAR: 4}
}
}

let res = Object.values(obj.PARTS).sort((a,b) => a.SUFFIX - b.SUFFIX);

obj.PARTS = Object.assign({}, res);

console.log(obj)

let obj = {
ID: 65,
MAIN: {ID: "GR", VALUE: 45},
PARTS:{
       0:{CODE: "GR3", PREFIX: "GR", SUFFIX: 3, YEAR: 3},
       1:{CODE: "GR4", PREFIX: "GR", SUFFIX: 4, YEAR: 2},
       2:{CODE: "GR1", PREFIX: "GR", SUFFIX: 1, YEAR: 5},
       3:{CODE: "GR2", PREFIX: "GR", SUFFIX: 2, YEAR: 4}
}
}

let res = Object.values(obj.PARTS).sort((a,b) => a.SUFFIX - b.SUFFIX);

obj.PARTS = Object.assign({}, res);

console.log(obj)
0 голосов
/ 12 апреля 2020
var obj = {
ID: 65,
MAIN: {ID: "GR", VALUE: 45},
PARTS:{
       0:{CODE: "GR3", PREFIX: "GR", SUFFIX: 3, YEAR: 3},
       1:{CODE: "GR4", PREFIX: "GR", SUFFIX: 4, YEAR: 2},
       2:{CODE: "GR1", PREFIX: "GR", SUFFIX: 1, YEAR: 5},
       3:{CODE: "GR2", PREFIX: "GR", SUFFIX: 2, YEAR: 4}
    }
};
var sortable = [];
for (let p in obj.PARTS) {
    sortable.push(obj.PARTS[p]);
}
obj.PARTS = sortable.sort(function(a, b) {
    return a.SUFFIX > b.SUFFIX;
});

теперь у вашего объекта вложенная часть отсортирована по возрастанию на основе SUFFIX

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...