如何根据项目的某些属性高效地对arrray进行排序

Cut*_*nja 4 javascript arrays sorting optimization

想象我有一个数组

var arr = [{name:'peter',年龄:50},{name:'alice',年龄:50},{name:'zebra',年龄:50},];

现在,我想对他们的名字进行排序.那么,输出是这样的:

[{name:'alice',年龄:50},{姓名:'彼得',年龄:50},{姓名:'斑马',年龄:50}]

天真的解决方案是创建一个名称数组并对它们进行排序,然后遍历这些排序的名称,在arr中找到相应的项目并插入到新数组中.

我知道这不是最优的算法,也不是最干净的算法.

谁能更有效地做到这一点?另外,请注意我使用的是JavaScript,因此我仅限于javaScript的库和内置功能,如果我们使用Java或其他类似的语言,我可能会更容易.

Dal*_*rzo 5

您可以使用sortArray 的功能来实现排序name:

var arr = [ {name: 'peter', age: 50}, {name: 'alice', age: 50}, {name: 'zebra', age: 50}, ];
arr.sort(function(a,b){ return a.name>b.name; } );
Run Code Online (Sandbox Code Playgroud)

你可以在这里读更多关于它的内容:

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

  • 使用`return a.localeCompare(b);`可以更好地处理文本排序,因为它可以处理更好的字符串并处理排序中的语言问题. (3认同)