gpt4 book ai didi

javascript - 根据已排序的 "subset"数组的顺序有效地对无序的 "master"数组进行排序

转载 作者:行者123 更新时间:2023-11-30 20:04:45 26 4
gpt4 key购买 nike

我有两个 ID 数组。一个是未过滤的 master 数组,它已根据单独的 dataset 对象中的值排序,其键是上述 ID)。另一个数组是masterfiltered 子集,其排序方式与master 相同。像这样:

const dataset = {a: {...}, b: {...}, c: {...}, d: {...}, e: {...}, f: {...}, g: {...}}
const master = ['a', 'b', 'c', 'd', 'e']
const filtered = ['a', 'c', 'd']

但是,有时排序标准会发生变化,因此我会重新对 master 数组进行排序。我可以然后重新过滤这个新排序的主数组以获得我的过滤数组,但我宁愿做的只是对filtered 数组基于 master 数组的新顺序,因为我认为这比再次运行我的过滤器更有效。

但是,我不确定该怎么做。为清楚起见,我认为我想要这样的流程:

const mySort = (unsortedSubset, blueprint) => {
// do sort here
}
const dataset = {a: {...}, b: {...}, c: {...}, d: {...}, e: {...}, f:
const master = ['e', 'd', 'c', 'b', 'a']
const filtered = ['a', 'c', 'd']

const sortedFiltered = mySort(filtered, master)
console.log(sortedFiltered)
// ['d', 'c', 'a']

最佳答案

您可以使用过滤后的数组进行查找来过滤主数组。

const
mySort = (subset, blueprint) => blueprint.filter(v => subset.includes(v));
dataset = { e: {}, d: {}, c: {}, b: {}, a: {} },
master = ['e', 'd', 'c', 'b', 'a'],
filtered = ['a', 'c', 'd'],
sortedFiltered = mySort(filtered, master);

console.log(sortedFiltered);

带有 Set 的版本

const
mySort = (subset, blueprint) => blueprint.filter(Set.prototype.has, new Set(subset));
dataset = { e: {}, d: {}, c: {}, b: {}, a: {} },
master = ['e', 'd', 'c', 'b', 'a'],
filtered = ['a', 'c', 'd'],
sortedFiltered = mySort(filtered, master);

console.log(sortedFiltered);

关于javascript - 根据已排序的 "subset"数组的顺序有效地对无序的 "master"数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53046168/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com