javascript - 根据JS中的另一个数组对Array的一部分进行排序
问题描述
我见过类似的问题。但我正在尝试根据另一个数组的值对数组进行部分排序。
这是我正在寻找的内容:
let array = [
{
name: "Foo",
values: [a, b, c, d]
},
{
name: "Bar",
values: [x, y]
},
{
name: "FooBar",
values: [k, l, m]
},
{
name: "BarBar",
values: [m, n]
}
]
和
let sort = ["BarBar", "Bar"]
所需的输出是:
let desiredOutput = [
{
name: "BarBar",
values: [m, n]
},
{
name: "Bar",
values: [x, y]
},
{
name: "Foo",
values: [a, b, c, d]
},
{
name: "FooBar",
values: [k, l, m]
}
]
数组仅基于两个值进行排序,并且每个其他元素都遵循相同的顺序。
我想知道是否有可能实现这一目标。
解决方案
如果元素存在于数组中,您可以使用sort
方法首先按条件排序,如果元素存在,也可以使用索引。
let array = [{name: "Foo",},{name: "Bar",},{name: "FooBar",},{name: "BarBar",}]
let sort = ["BarBar", "Bar"]
array.sort((a, b) => {
let iA = sort.indexOf(a.name);
let iB = sort.indexOf(b.name);
return ((iB != -1) - (iA != -1)) || iA - iB
})
console.log(array)
推荐阅读
- python - 如何使用存储在列表中的列表名称来执行列表操作?
- powershell - powershell convert-tojson 没有给出最佳结果
- next.js - 如何在两个表之间建立关系并进行有效查询?
- c++ - 是否可以使用范围适配器将投影成员恢复为原始类对象?
- css - 是否可以将所有孩子及其后代与根网格对齐?
- javascript - onPageFisnished 中的 javascript 启动 Uncaught TypeError: Cannot set property 'value' of null in android webview
- http - 服务器修改请求内容时的 HTTP 响应
- python-3.x - 如何在 pytest 中断言两个具有模拟属性的 pydantic 模型相等?
- reactjs - 从 API 动态更改 SVG 内的图像
- cryptography - 具有大小限制的固件中的加密数字签名