如何在javascript中对组合2个数组进行排序(如c#(array.sort()))

How do I sort combining 2 array in javascript (like c# (Array.sort() ))

本文关键字:排序 sort array 数组 javascript 组合 2个      更新时间:2023-09-26

我有两个数组。第一个数组中的名称和第二个数组中索引。我用C#(Array.sort()属性)订购。

示例:我的数组名称为OrderedNames。

var names = OrderedName.SelectMany(x => x.Names)      // names array
var indexes = OrderedName.SelectMany(x => x.Indexes) // indexes array
Array.sort(indexes,names)                           // ordered names with indexes

我用LINQ做了这个C#。

我想用JavaScript做同样的事情。

所以我的Javascript代码如下(例如):

var names = Enumerable.From('$.OrderedNames').SelectMany('$.Names').ToArray();
var indexes = Enumerable.From('$.OrderedNames').SelectMany('$.Indexes').ToArray();

我可以选择名称和索引。我想合并两个数组并进行排序。我用C#数组.sort()做了这件事,但用Javascript没有。

你知道吗?

您可以将名称和键组合在一起,对它们进行排序,然后返回排序后的名称,如

var names = ['two', 'three', 'one', 'four'];
var keys = [2, 3, 1, 4];
var sortedNames = names
                    .map((n, i) => { return { name: n, key: keys[i] }})
                    .sort((a, b) => a.key - b.key)
                    .map(n => n.name);
console.log(sortedNames); // ['one', 'two', 'three', 'four']';

有趣的问题。我认为没有map.sort.map你也可以这样做。。

var names = ['rhino', 'hippo', 'tiger', 'badger', 'crocodile'],
     keys = [4, 5, 3, 1, 2],
    clone = names.slice(),
   sorted = names.sort((a,b) => keys[clone.indexOf(a)]-keys[clone.indexOf(b)]);
console.log(sorted);