2017-05-06 97 views
1

我无法从正在处理的小型个人项目中排序特定数组对象。我从来没有遇到过使用Array.prototype.sort()函数的麻烦,但我不知道是否有关于多个对象键的事情正在影响它...按特定键值|对对象数组排序Javascript

一直盯着它比我关心承认和只是现在需要寻求帮助。 :|

目标:按照字母顺序排列相对于每个对象的特定key.value的对象数组。

在此先感谢!

JS Fiddle Here

排序函数的例子 - (我建议虽然看全捣鼓上下文)。

var sorted = array.sort((a, b) => { return a.key > b.key; }); 

解决

@Ryan帮我找到返回一个布尔值是不够的,你需要明确地返回一个正数或负数,或者0

@Brk给我一个令人敬畏的快速方法来做到这一点。

这篇文章有一个非常详细的介绍。 Sorting in JavaScript: Shouldn't returning a boolean be enough for a comparison function?

谢谢大家!对不起,重复的帖子:|

+1

排序比较函数应该返回'-1'如果'一个 B'。 – Ryan

+0

我以为回复真假就够好了,以前一直都是这样。但是,您的评论促使我重新进行搜索,我发现这篇文章...... http://stackoverflow.com/questions/24080785/sorting-in-javascript-shouldnt-returning-a-boolean-be-enough-for- a-comparison 好的......好烦啊。虽然谢谢! – TJBlackman

+0

@Ryan请注意,不需要返回特定值“1”或“-1”。任何正值或负值的处理方式都是相同的。 –

回答

1

您可以使用localeCompare方法,它会返回一个数字表示参考字符串是否之前或之后来到或相同的排序顺序给定的字符串。

var sorted = array.sort((a, b) => { 
    return a.subreddit.localeCompare(b.subreddit) 
}); 

DEMO

+0

这真棒! 谢谢! – TJBlackman

+0

@TJBlackman非常感谢您的帮助 – brk