2016-08-03 60 views
1

我有2个数组。第一个数组中的名称和第二个数组中的索引。我订购了C#(Array.sort()属性)。我如何排序在javascript中结合2数组(如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#Array.sort()做了这个,但我没有用Javascript。

请问您有什么想法吗?

+1

我可以告诉你,现在你的'JS'代码不会编译。你不能像'JS'那样直接使用'.NET'功能('LINQ')。 –

+0

我怎么能用JavaScript来做同样的过程?我知道,我不能直接从JS使用.Net功能。 @ ext0 – eagle

+0

检查http://stackoverflow.com/documentation/javascript/187/arrays/4206/sorting-arrays#t=201608031948491011675 – CMedina

回答

0

有趣的问题排序的名称。我想如果没有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);

1

您可以将姓名和按键结合在一起,对它们进行排序,然后返回这样

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']'; 
+0

真棒。非常感谢 ! ! @ user1399195 – eagle