繁体   English   中英

以与另一个数组相同的顺序对数组进行排序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM