我整天都在阅读类似的帖子,但无法弄清楚如何通过多个属性对我的javascript数组进行排序。 我的数组有一个'name'和'type'属性。 要按名称排序,我现在使用:
byNameDesc.sort(function (a, b) {
var x = a.name.toLowerCase();
var y = b.name.toLowerCase();
return y < x ? -1 : y > x ? 1 : 0;
});
效果很好。我想增强这个功能。如果'name'是'foo',它应该始终位于顶部。我也想按'类型'排序。 所以'foo'应该始终排在最前面,接下来按'name'和'type'排序。
我试过了:
byNameDefault.sort(function (a, b) {
if (a.name == 'foo') {
return -1;
}
var x = a.type.toLowerCase();
var y = b.type.toLowerCase();
return x < y ? -1 : x > y ? 1 : 0;
});
但那没用。
我不知道如何按'名称'和'类型'排序。
非常感谢任何帮助。
答案 0 :(得分:2)
对于多个排序条件,您可以从第一个标准到最后一个标准: 如果一个标准的两个条目不相等,则可以从sort函数返回结果-1或1.此外,在最后一个条件中,您还可以为两个相等的输入返回0。
以下是您案例的示例实现:
<script type="text/javascript">
$(document).ready(function() {
$("#analyze_audio").submit(function (e) {
debugger;
e.preventDefault();
var url = "/analyze_audio";
var dataToSend = {"analyze_audio": "analyze_audio"};
var callback = function (data) {
debugger;
document.getElementById("audioresponse").innerHTML = (data);
};
$.post(url, dataToSend, callback, 'html');
});
});
</script>