如何按指定term键值对JavaScript JSON对象数组排序?
自定义规则排序对象数组
原始数组:
[ { term: 'summer' }, { term: 'winter' }, { term: 'fall' }, { term: 'summer' }, { term: 'summer' } ]
需求:按照指定顺序排序,winter排首位,fall次之,summer最后,预期结果:
[ { term: 'winter' }, { term: 'fall' }, { term: 'summer' }, { term: 'summer' }, { term: 'summer' } ]
实现方法
核心思路是先定义优先级映射表,给每个term分配对应的排序权重,再利用数组的sort()方法根据权重比较元素顺序。
代码实现:
// 定义自定义排序优先级,值越小优先级越高 const priorityMap = { winter: 0, fall: 1, summer: 2 }; // 原始目标数组 const originalArr = [ { term: 'summer' }, { term: 'winter' }, { term: 'fall' }, { term: 'summer' }, { term: 'summer' } ]; // 执行排序 const sortedArr = originalArr.sort((itemA, itemB) => { return priorityMap[itemA.term] - priorityMap[itemB.term]; }); console.log(sortedArr);
说明
- 优先级映射表
priorityMap中,数值越小代表排序位置越靠前,比如winter对应0,会排在最前面。 sort()方法的回调函数通过对比两个元素term对应的权重值来调整顺序:若itemA的权重小于itemB,返回负数,itemA会被排到itemB前面;反之则排在后面。- 这种方式扩展性极强,后续调整排序规则只需修改
priorityMap的键值对即可。
内容的提问来源于stack exchange,提问作者David Faizulaev
相关产品推荐
相关产品推荐

