Я не на 100% уверен, почему массив не работает для вас.
Возможно, вы хотите, чтобы 1 структура была отсортирована, а также получить доступ к объекту с помощью ключа.
Возможно, выобнаружите, что просто использовать Array.find()
было бы довольно быстро.
Но другой вариант, если вы не возражаете против того, чтобы ваши ключи имели префикс, например.как _123
, тогда это заставит ключ быть строкой, поэтому, используя современные движки JS, порядок основан на порядке вставки.Так что, если вы сделали sort
, а затем reduce
, вы должны получить ключи объектов в нужном вам порядке, но, конечно, с простым префиксом.
Конечно, если позже вы захотите получить доступ кобъект, вы просто должны помнить, чтобы ввести префикс.
const data = [
{"name": "ragupathi", "siteID": 10},
{"name": "abi","siteID": 13},
{"name": "mahesh", "siteID": 12},
];
const ret =
data.sort((a, b) => a.name.localeCompare(b.name)).
reduce((a, v) => {
a[`_${v.siteID}`] = v;
return a;
}, {});
console.log(ret);
//test let's get id 13 by key
console.log(ret['_13']);
//prove order
console.log(Object.keys(ret));