Javascript 对象值按累积顺序排序
我一直在尝试按照特定的顺序对json响应对象数组进行排序,比如对象是否包含Umlaute单词/字符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的错误不是一个函数。是否仍然存在对对象数组进行排序的方
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); });