javascript - 使用参数更改数组中对象的顺序
问题描述
我有一个这样的对象数组:
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 的元素,然后按顺序排列下一个元素。字段编号必须始终按顺序排列,只有从哪个项目开始可能会有所不同。
我不知道我该怎么做这件事..
解决方案
如果该值小于给定值,您可以将该值作为增量检查。否则按增量排序。
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; }
推荐阅读
- java - 获取 NotSerializableException - 将 Spark Streaming 与 Kafka 一起使用时
- c# - Html ActionLink 运行时错误:'值不能为空或空。但值不为 null 或为空
- linq - 如何改进 linq-to-sql 查询
- ios - 首次登录应用后自动填充iOS12提示信息用户保存密码?
- c++ - Visual Studio 查找未覆盖的纯虚函数
- r - 将第一行粘贴到列表中的列名
- python - 使用 Numba 将单例数组分配给数组元素
- php - Symfony 3 - 教义 - 大查询的困难
- sqlite - SQLite 如何防止延迟事务的死锁?
- gradle - 我应该在 build.gradle 中添加什么来设置 Idea 的 Project JDK?