首页 > 解决方案 > 使用参数更改数组中对象的顺序

问题描述

我有一个这样的对象数组:

const arr = [
  {number: 1, value: 50},
  {number: 2, value: 4},
  {number: 3, value: 33},
  {number: 4, value: 49},
  {number: 5, value: 92},
  {number: 6, value: 1},
  {number: 7, value: 49},
]

和:

const startBy = 3

然后我想要一个像这样的另一个数组:

const newArr = [
  {number: 3, value: 33},
  {number: 4, value: 49},
  {number: 5, value: 92},
  {number: 6, value: 1},
  {number: 7, value: 49},
  {number: 1, value: 50},
  {number: 2, value: 4},
]

也就是说,我想“重新排列”数组的元素,使第一个元素是字段编号等于 startBy 的元素,然后按顺序排列下一个元素。字段编号必须始终按顺序排列,只有从哪个项目开始可能会有所不同。

我不知道我该怎么做这件事..

标签: javascriptarrayssortingobject

解决方案


如果该值小于给定值,您可以将该值作为增量检查。否则按增量排序。

function sortBy(array, first) {
    array.sort(function (a, b) {
       return (a.number < first) - (b.number < first) || a.number - b.number;
    });
    return array;
}

const array = [{ number: 1, value: 50 }, { number: 2, value: 4 }, { number: 3, value: 33 }, { number: 4, value: 49 }, { number: 5, value: 92 }, { number: 6, value: 1 }, { number: 7, value: 49 }];
console.log(sortBy(array, 3));
.as-console-wrapper { max-height: 100% !important; top: 0; }


推荐阅读