2016-07-25 196 views
0

我需要使用underscore.js以升序对数组进行排序。它几乎为我工作,但当 排序名称包含大写字母时,大写字母名称排序顺序排在第一位。你能帮我解决这个问题吗? Tahank你。使用underscore.js对数组升序排序

尝试以下

connectors = [ 
    { 
    "name": "ajax" 
    }, 
    { 
    "name": "jquery" 
    }, 
    { 
    "name": "FGJDE" 
    } 
] 
sorted = _.sortBy(connectors, 'name'); 

预计输出

connectors = [ 
    { 
    "name": "ajax" 
    }, 
    { 
    "name": "FGJDE" 
    }, 
    { 
    "name": "jquery" 
    } 
] 

我得到错误的排序像下面

connectors = [ 
    { 
    "name": "FGJDE" 
    }, 
    { 
    "name": "ajax" 
    }, 
    { 
    "name": "jquery" 
    } 
] 
+2

看一看有关[在下划线不区分大小写的排序(HTTP这样的疑问://计算器。 COM /问题/ 25873635 /下划线-JS-不区分大小写的分选)。 –

+1

'_.sortBy(connectors,o => o.name.toLowerCase());' – Tushar

回答

2

你可以这样做

connectors = [{ 
    "name": "ajax" 
}, { 
    "name": "jquery" 
}, { 
    "name": "FGJDE" 
}] 
sorted = _.sortBy(connectors, function (text) { return text.name.toLowerCase(); }); 
console.log(sorted); 

这里是jsFiddle

1

为什么不使用String#localeCompare呢?

var connectors = [{ "name": "ajax" }, { "name": "jquery" }, { "name": "FGJDE" }]; 
 

 
connectors.sort(function (a, b) { 
 
    return a.name.localeCompare(b.name); 
 
}); 
 

 
console.log(connectors);