You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何依据array2的指定顺序对数组或对象属性进行排序?

实现方案

数组按指定顺序排序

实现逻辑为优先匹配array2内元素的顺序,不在array2内的元素保持原有相对顺序排在后方:

const array1 = [7, 2, 6, 3, 4, 1];
const array2 = [1, 2, 9];

const orderMap = new Map(array2.map((v, i) => [v, i]));
const defaultOrder = array2.length;
const array3 = [...array1].sort((a, b) => 
  (orderMap.get(a) ?? defaultOrder) - (orderMap.get(b) ?? defaultOrder)
);

运行后array3的值为[1, 2, 7, 6, 3, 4],符合预期。

对象属性按指定顺序重排

ES6+ 规范中对象的字符串类型键会保留插入顺序,因此按需求顺序插入键生成新对象即可:

const object1 = {key5: 'value5', key3: 'value3', key4: 'value4', key1: 'value1', key2: 'value2'};
const array2 = ["key1", "key2", "key3"];

const sortedKeys = [...array2, ...Object.keys(object1).filter(k => !array2.includes(k))];
const object3 = Object.fromEntries(sortedKeys.map(k => [k, object1[k]]));

运行后object3的属性顺序完全符合要求。


内容的提问来源于stack exchange,提问作者Maradox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 09:15:03