javascript - 数组的特定排序项
问题描述
假设我有一个包含 3 个项目的数组,它们是随机创建的。其中一个具有流行的布尔值:true,而其余的则没有。我想把流行的项目作为索引1(居中)像这样[例子,流行,例子]
我试着这样排序
items.sort((a, b) => {
if (a.id < b.id) {
return -1;
}
if (a.id > b.id) {
return 1;
}
return 0;
});
但在这种情况下,出于某种原因,我必须将特定 ID(从 1 到 3)添加到所有这 3 个项目中,我不能给他们 ID,所以这个解决方案不能按需要工作。
解决方案
由于它总是三项,只需迭代数组,找到true
一项,并将其索引与 index 交换1
。
const items = [
{x: false},
{x: false},
{x: true},
];
for (const [i, o] of items.entries()) {
if (o.x) {
[items[i], items[1]] = [items[1], items[i]];
break;
}
}
console.log(items);
或者因为实际上只有两种可能性,所以你可以不使用循环。
const items = [
{x: false},
{x: false},
{x: true},
];
var idx = items[0].x ? 0 :
items[2].x ? 2 :
1;
[items[idx], items[1]] = [items[1], items[idx]];
console.log(items);
推荐阅读
- r - 如何在映射之前访问列表的名称?
- angular - 用于角度反应形式的动态对象属性名称
- matlab - 根据 z 轴上的条件以两种颜色绘制曲面图
- user-interface - VAADIN:UI.access() 推送队列的大小
- arrays - 在python中格式化字符串以转换为num数组
- c# - C# WPF 多窗口
- microchip - PIC32MZ NVM 写操作不正确
- python-3.x - 我们如何将文件(作为 Multipart 请求的一部分接受)发送到 python 中的 MINIO 对象存储而不将文件保存在本地存储中?
- excel - 搜索多个单词并使用 IF/OR/Vlookup 功能
- react-native - device.getModel() 无法正常工作