我对如何使用jQuery最有效地对以下数据进行排序感兴趣:
我从服务器检索了一个json对象:
var data = {/*json-object*/};
$.each(data.level1.sub1, function(){
if(this.name.length < 2) {
this.type = "banana";
itemarray.push(this);
}
else {
this.type = "apple";
itemarray.push(this);
}
});
$.each(data.level2.sub1, function(){
this.type = "kiwi";
itemarray.push(this);
});
这让我想到我可以通过这样做列出数组中的内容(typeof
对象,而不是“真实”数组):
if (itemarray.length){
$.each(itemarray, function(index, value){
$('#wrapper').append('<li>' + index + ' : ' + value.name + ' * ' + value.type + '</li>');
});
}
结果:
0 : abc * apple
1 : a * banana
2 : lala * apple
3 : bcd - Copy * kiwi
4 : okl * banana
现在我想对数组(再次为typeof
对象)进行排序:按类型分组并按类型排序asc
。你会怎么建议这样做?
答案 0 :(得分:1)
由于您使用的是itemarray.push
方法,我假设itemarray
是一个真正的数组。数组对象(注意:typeof [] === "object"
)支持sort()
方法。
将原生Array.sort
方法与函数结合使用,如下所示。此方法直接修改数组。
var itemarray = [{type:"C"},{type: "B"}]; //Your array looks like this
//ASC result: [{type:"C"}, {type:"B"}]
itemarray.sort(function(x,y){
return x.type.localeCompare(y.type);
});
//DESC result: [{type:"B"}, {type: "B"}]
itemarray.sort(function(x,y){
return y.type.localeCompare(x.type);
});
答案 1 :(得分:0)
以这种方式使用
$(document).ready(function () {
var data = {/*json-object*/};
;
data = data.sort(function (a, b) {
if (a.type < b.type) { return -1 };
if (a.type > b.type) { return 1 };
return 0;
});
$.each(data, function (index, value) {
$("#wrapper").append("<li>" + value.index + " : " + value.name + " * " + value.type + "</li>");
});
});