我有一个这样的数组:
const arr = [['Dog', 'Cat', 'Fish', 'Bird'],[1, 4, 2, 3]];
我该如何排序,使其符合以下顺序:
const arr = [['Dog', 'Fish', 'Bird', 'Cat'],[1, 2, 3, 4]];
vwhgwdsa1#
zip它们,排序,然后再次zip:
zip
let zip = args => args[0].map((_, i) => args.map(a => a[i])) // const arr = [['Dog', 'Cat', 'Fish', 'Bird'],[1, 4, 2, 3]]; r = zip(zip(arr).sort((x, y) => x[1] - y[1])) console.log(r)
juud5qan2#
Array#reduce
items
Map
Array#sort
Map#get
const sort = ([ items, indices ]) => { const indexMap = items.reduce((map, item, index) => map.set(item, indices[index]) , new Map); return [ items.sort((a, b) => indexMap.get(a) - indexMap.get(b)), indices.sort() ]; } console.log( sort([['Dog', 'Cat', 'Fish', 'Bird'], [1, 4, 2, 3]]) );
h22fl7wq3#
确保索引数组包含从1到n的所有数字:
function deepSort(arr2d) { const [stringArr, indexArr] = arr2d const result = [] indexArr.forEach((index, i) => result[index - 1] = stringArr[i]) return [result, indexArr.sort()] }
2hh7jdfx4#
您可以对索引数组进行排序,并根据索引数组Map值。第一个
4条答案
按热度按时间vwhgwdsa1#
zip
它们,排序,然后再次zip
:juud5qan2#
Array#reduce
迭代items
,同时更新Map
,其中键是项,值是其初始索引Array#sort
和Map#get
,根据上面的索引Map对项目进行排序Array#sort
对索引数组进行排序h22fl7wq3#
确保索引数组包含从1到n的所有数字:
2hh7jdfx4#
您可以对索引数组进行排序,并根据索引数组Map值。
第一个