Javascript 对象值按累积顺序排序

Javascript 对象值按累积顺序排序,javascript,angularjs,Javascript,Angularjs,我一直在尝试按照特定的顺序对json响应对象数组进行排序,比如对象是否包含Umlaute单词/字符 object { item: 1, users: [ {name: "A", age: "23"}, {name: "B", age: "24"}, {name: "Ä", age: "27"} ] } 预期的名称排序为A、Ä和B 尝试使用localecompare()进行排序时 获取类似于object.sort的错误不是一个函数。是否仍然存在对对象数组进行排序的方

我一直在尝试按照特定的顺序对json响应对象数组进行排序,比如对象是否包含Umlaute单词/字符

object {
  item: 1,
  users: [
   {name: "A", age: "23"}, 
   {name: "B", age: "24"},
   {name: "Ä", age: "27"}
 ]
}
预期的名称排序为A、Ä和B

尝试使用localecompare()进行排序时


获取类似于
object.sort的错误不是一个函数。是否仍然存在对对象数组进行排序的方法。

您需要获取对象的属性进行排序

var object={item:1,用户:[{name:“A”,age:“23”},{name:“B”,age:“24”},{name:“Ä”,age:“27”};
sort(函数(a,b){返回a.name.localeCompare(b.name);});
console.log(对象)

.as console wrapper{max height:100%!important;top:0;}
必须将
sort()
函数应用于数组,而不是外部对象。对象没有该方法,在一般情况下,无论如何,键顺序都不能保证。对于“有序”数据,始终使用数组,而不是对象

这是一个使用
o.users
数组的示例。输出
n
也是一个数组

注意:切勿滥用保留关键字作为变量名。如果使用
对象
作为变量名,强烈建议不要这样做!我已将其替换为
o
。虽然
object
不是保留关键字,但
object
(大写
O
)是保留关键字。这两者很容易混淆

var o={
“项目”:1,
“用户”:[
{“姓名”:“A”,“年龄”:“23”},
{“姓名”:“B”,“年龄”:“24”},
{“姓名”:“Ä”,“年龄”:“27”}
]
};
var n=o.users.sort((a,b)=>a.name.localeCompare(b.name,“de”);

控制台日志(n)不,您不能这样做
sort
是一种数组方法,您永远无法保证对象键的顺序,我理解,但有任何替代方法吗?看看您的示例,您确实有一个对象数组,可以使用
sort
对该数组进行排序。你不应该做
object.users.sort((a,b)=>a.name.localeCompare(b.name))
。我试过object.users.sort((a,b)=>a.name.localeCompare(b.name))但是抛出了一个错误,比如a.localeCompare不是函数它是a.name.localeCompare(b.name))不是a.localeCompare(b.name))你怎么知道他想对用户进行排序?@brk,“预期名称排序为A、Ä和B.”@klmuralimohan,上述方法是否适用于您?是否使用
A.localeCompare
A
是一个对象,而不是字符串,如
name
object.sort(function (a, b) { return a.localeCompare(b); });