2015-04-02 26 views
-1

我已经使用underscore.js sortBy集合,但它创建了用特定键排序json。键的类型可以是数字,文本或日期。Underscore.js sortBy结果错误的顺序

var arr = [ 
    {"NodeName)":"Drama"}, 
    {"NodeName":"Song"}, 
    {"NodeName":"Jokes"}, 
    {"NodeName":"movie "}, 
    {"NodeName":"music"}, 
    {"NodeName":"Main"}, 
    {"NodeName)":"Random"}, 
    {"NodeName":"Silent"}, 
    {"NodeName":"travel"}, 
    {"NodeName":"udefined"}]; 

var testSortBy = _.chain(arr).sortBy("NodeName").value(); 

结果显示如下:

Jokes 
Main 
Silent 
Song 
movie 
music 
travel 
udefined 
Drama 
Random 

,但结果应该是这样的:

Drama 
Jokes 
moive 
music 
Main 
Random 
Silent 
Song 
travel 
udefined 

我想这个问题可以是大写和小写的问题。我怎样才能避免这个问题?

+4

你有“NodeName)”作为Drama和Random的关键。这是一个错字还是导致行为? – zvona 2015-04-02 10:26:20

+0

删除zvona提到的括号,它应该可以工作。 – Rouby 2015-04-02 10:30:14

+0

在这个问题中误添加了括号,但是我没有在代码中加上这个,所以结果仍然是一样的 – MAT14 2015-04-03 03:35:31

回答

-1

你的数组中的值使用的开源项目jinqJs

See Fiddle

排序。

var result = jinqJs().from(arr).orderBy([{field: 0}]).select(); 

这里没关系,按键是不同的,只是值排序。但请记住,javaScript是大小写敏感的,并且您的某些值是大写和小写。