我很感兴趣了解您如何使用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
现在我想对数组进行排序(这里的数组类型是object),按类型分组,并按每种类型按升序排序。你会如何建议实现?
0 : aname * apple 1 : bname * apple 2 : cname * apple 3 : aname * banana 4 : bname * banana 2 : aname * kiwi 3 : bname * kiwi
当我使用第一种排序方法两次(x.type.localeCompare(y.type)而不是相反),这很好,因为它可以对类型和名称进行排序。但是我实际上想要的顺序是:apple,kiwi,banana!我尝试了几种组合,但sort()函数只能对类型和名称本身进行排序 - 那么我该如何做才能得到我想要的结果呢? - ho.sapplearray = $.grep(itemarray, function(n, i){ return (n.type==="apple"); }); bananaarray = $.grep(itemarray, function(n, i){ return (n.type==="banana"); }); kiwiarray = $.grep(itemarray, function(n, i){ return (n.type==="kiwi"); }); itemarray=applearray.concat(kiwiarray).concat(bananarray);
- ho.s