我看过类似的问题。但是我正在尝试根据另一个数组的值对数组进行部分排序。
这是我想要的:
InstallExecuteSequence
和
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"]
仅基于两个值对数组进行排序,其他所有元素都遵循相同的顺序。
我想知道是否有可能实现这一目标。
答案 0 :(得分:3)
如果元素存在于数组中,则可以使用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)
答案 1 :(得分:2)
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"]
const sortWithAnotherArray=(arr,sortBy)=>{
let begin =sortBy.map(e=>arr.filter(v=>v.name===e))
let end = arr.filter(e=>sortBy.includes(e.name))
return begin +end
}
console.log(sortWithAnotherArray(array,sort))