2016-08-03 33 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