How to sort an array of objects with jquery or javascript
本问题已经有最佳答案,请猛点这里访问。
我有一组对象:
1 | var array = [(id, name, value),(id, name, value)]; //and so on |
如何按属性名称
我试过这样做:
请帮帮我!
编辑:数组可以包含两个以上的对象!它可以包含数百个。
编辑:为什么这个问题在"重复"问题2年前被问到时被标记为重复?
1 2 3 4 5 6 7 8 | //This will sort your array function SortByName(a, b){ var aName = a.name.toLowerCase(); var bName = b.name.toLowerCase(); return ((aName < bName) ? -1 : ((aName > bName) ? 1 : 0)); } array.sort(SortByName); |
号
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | var array = [[1,"grape", 42], [2,"fruit", 9]]; array.sort(function(a, b) { // a and b will here be two objects from the array // thus a[1] and b[1] will equal the names // if they are equal, return 0 (no sorting) if (a[1] == b[1]) { return 0; } if (a[1] > b[1]) { // if a should come after b, return 1 return 1; } else { // if b should come after a, return -1 return -1; } }); |
。
我还修复了多维数组中的语法错误。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | //objects var array = [{id:'12', name:'Smith', value:1},{id:'13', name:'Jones', value:2}]; array.sort(function(a, b){ var a1= a.name.toLower(), b1= b.name.toLower(); if(a1== b1) return 0; return a1> b1? 1: -1; }); //arrays var array =[ ['12', ,'Smith',1],['13', 'Jones',2]]; array.sort(function(a, b){ var a1= a[1], b1= b[1]; if(a1== b1) return 0; return a1> b1? 1: -1; }); |
1 2 3 4 | data.sort(function(a,b) { return a.val - b.val; }); |
。
sort方法包含一个可选参数,用于传递自定义比较函数。
假设您需要数组:
1 2 3 4 5 6 7 8 9 10 | var arr = [[3,"Mike", 20],[5,"Alex", 15]]; function compareName(a, b) { if (a[1] < b[1]) return -1; if (a[1] > b[1]) return 1; return 0; } arr.sort(compareName); |
。
否则,如果需要对象数组,可以执行以下操作:
1 2 3 4 5 6 7 | function compareName(a, b) { if (a.name < b.name) return -1; if (a.name > b.name) return 1; return 0; } |
好吧,看起来您没有创建真正的多维数组,而是创建了一个(几乎)javascript对象数组。尝试像这样定义数组->
1 | var array = [ [id,name,value], [id,name,value] ] |
希望有帮助!