【问题标题】:How do I sort combining 2 array in javascript (like c# (Array.sort() ))如何在javascript中对组合2个数组进行排序(如c#(Array.sort()))
【发布时间】:2016-12-09 16:23:17
【问题描述】:

我有 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。

请问你有什么想法吗?

【问题讨论】:

  • 我现在可以告诉你,你的JS 代码无法编译。你不能像这样直接从JS 使用.NET 功能(LINQ)。
  • 我怎样才能用我问的 JavaScript 做同样的过程?我知道,我不能直接从 JS 使用 .Net 功能。 @ext0

标签: javascript c# arrays linq sorting


【解决方案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']';

【讨论】:

    【解决方案2】:

    有趣的问题。我认为没有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);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-29
      • 1970-01-01
      • 2015-03-16
      • 2012-11-20
      • 2018-11-19
      • 1970-01-01
      • 2021-11-20
      相关资源
      最近更新 更多