Моя проблема в том, что у меня есть два массива, которые нужно отсортировать в одном порядке.
Вот они:
objects = [obj1, obj2, obj3, obj4];
zorder = [1, 3, 4, 2]
Мне нужно заказать zorder
, чтобы это был 1, 2, 3, 4,, это довольно просто, но мне нужно, чтобы объекты были отсортированы таким же образом, например:
objects = [obj1, obj4, obj2, obj3]
zorder = [1, 2, 3, 4]
Я знаю, что этот вопрос задавали раньше, но ни один из ответов у меня не работает. Все ответы, которые я нашел, превратят это в следующее:
objects = [{name:obj1, order:1},
{name:obj2, order:3},
{name:obj3, order:4},
{name:obj4, order:2}]
а затем отсортируйте его оттуда. Я делаю это не мочь, потому что массив objects
должен оставаться в точности таким же, за исключением порядка, то же самое верно и для zorder
. Я могу создать новый массив, но тогда у меня с самого начала возникает та же проблема.
Я действительно застрял на этом и буду очень благодарен за вашу помощь, заранее спасибо.
Редактировать: массив объектов содержит 4 объекта.
🤔 А знаете ли вы, что...
JavaScript позволяет создавать мобильные приложения для iOS и Android с использованием фреймворков, таких как React Native и NativeScript.
Вы можете создать карту объектов, используя значения zorder в качестве ключей перед сортировкой zorder.
Затем отсортированный массив Array # sort () zorder и Array # map, возвращающий связанный объект из объекта Map
let objects = [{id:100}, {id:300}, {id:400}, {id:200}],
zorder = [1, 3, 4, 2],
map = zorder.reduce((a, c, i) => a.set(c, objects[i]), new Map);
zorder.sort((a, b) => a - b);
objects = zorder.map(n => map.get(n));
console.info('zorder', zorder)
console.info('objects', objects)