我有两个ID数组。一个是未经过滤的master
数组,该数组已根据单独的dataset
对象中的值进行了排序,该对象的键是上述ID。另一个数组是filtered
的{{1}}子集,其排序方式与master
相同。像这样:
master
但是,有时排序标准会更改,因此我对const dataset = {a: {...}, b: {...}, c: {...}, d: {...}, e: {...}, f: {...}, g: {...}}
const master = ['a', 'b', 'c', 'd', 'e']
const filtered = ['a', 'c', 'd']
数组进行了重新排序。我可以,然后重新过滤这个新排序的主数组,以获得我的master
数组,但我要做的只是对{{1 }}数组基于filtered
数组的新顺序,因为我认为这比再次运行过滤器更有效。
但是,我不确定该怎么做。为了清楚起见,我认为我想要这样的流程:
filtered
答案 0 :(得分:1)
您可以通过使用过滤后的数组进行查找来过滤主数组。
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);