Javascript Array.sort和Linq OrderBy给出不同的结果
我试图用C#和javascript对数组进行排序。但是我有一个问题,两个排序结果都不匹配。它们的排序都不同,例如,如果输入数组有下划线 在C中,下面是一个示例代码,是一个dotnetfiddle链接Javascript Array.sort和Linq OrderBy给出不同的结果,javascript,c#,arrays,sorting,Javascript,C#,Arrays,Sorting,我试图用C#和javascript对数组进行排序。但是我有一个问题,两个排序结果都不匹配。它们的排序都不同,例如,如果输入数组有下划线 在C中,下面是一个示例代码,是一个dotnetfiddle链接 using System; using System.Linq; public class Program { public static void Main() { var array= new string[]{"Meter_2","Meter0Add","Me
using System;
using System.Linq;
public class Program
{
public static void Main()
{
var array= new string[]{"Meter_2","Meter0Add","Meter0Replace","Meter_1","ZZZ"};
var temp= array.OrderBy(x => x).ToArray();
foreach(string x in temp)
{
Console.WriteLine(x);
}
}
}
var array = ["Meter_2","Meter0Add","Meter0Replace","Meter_1","ZZZ"];
array.sort();
document.writeln(array.join(", "));
结果:
米_1,
米_2,
Meter0Add,
仪表0更换,
ZZZ
在javascript中,下面是一个代码示例,它是一个js fiddle链接
using System;
using System.Linq;
public class Program
{
public static void Main()
{
var array= new string[]{"Meter_2","Meter0Add","Meter0Replace","Meter_1","ZZZ"};
var temp= array.OrderBy(x => x).ToArray();
foreach(string x in temp)
{
Console.WriteLine(x);
}
}
}
var array = ["Meter_2","Meter0Add","Meter0Replace","Meter_1","ZZZ"];
array.sort();
document.writeln(array.join(", "));
结果
Meter0Add,
仪表0更换,
米_1,
米_2,
ZZZ
问题是如何使javascript与C#?JS一样具有默认排序顺序,并且不稳定,除非提供了比较函数。根据MDN:
sort()方法对数组中的元素进行适当排序并返回
阵列。这种情况不一定稳定。默认排序顺序
是根据字符串Unicode代码点
如果将其用作比较函数,将得到相同的结果:
var数组=[“仪表2”、“仪表0添加”、“仪表0替换”、“仪表1”、“ZZZ”];
array.sort(函数(a,b){
返回a.localeCompare(b);
});
console.log(array.join(“,”)代码>区域性敏感(C#)和顺序(JS)比较是不同的-如果在C#中使用ordinal
进行比较,您将得到相同的结果(请参阅)。我找不到好的副本,所以-希望有人会(或只是再次键入相同的解释)。