[英]Sorting an array in order to move an element from one place to another, while keeping `order` field the same
[英]sorting an array in the same order as another one
我的问题是我有两个数组要按相同的顺序排序。
它们如下:
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 个对象。
在对 zorder 进行排序之前,您可以使用 zorder 值作为键创建对象的 Map。
然后 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.log('zorder', zorder) console.log('objects', objects)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.