var array = [
{
age: 20,
name: 'lufy',
cnName: '路飞'
}, {
age: 25,
name: 'usop',
cnName: '乌索普'
}, {
age: 12,
name: 'tao',
cnName: '涛'
}, {
age: 34,
name: 'robin',
cnName: '罗宾'
}
];
/** 数组按对象排序
* [arr] 要排序的原数组
* [sortStr] 原数组中要排序的对象属性
*/
function sortArr(arr, sortStr) {
// 排序函数(用以返回次序关系)
var bySort = function() {
return function(o, p) { // p 是 o 的下一项
var a = o[sortStr],
b = p[sortStr];
if (isNaN(a)) { // 非数字排序
return a.localeCompare(b); // 用本地特定顺序来比较(支持中文)
} else {
if (a === b) {
return 0;
} else {
return a > b ? 1 : -1;
}
}
}
};
for (var i = 0; i < arr.length; i++) {
//console.log(arr[i][sortStr])
arr.sort(bySort(arr[i][sortStr]));
}
}
sortArr(array, 'age'); // 按 age 排序
//sortArr(array, 'name'); // 按 name 排序
//sortArr(array, 'cnName'); // 按 中文名 cnName 排序
console.log(array);
将数组按对象某一属性值排序(number,字母,文字)
最新推荐文章于 2022-08-26 17:23:57 发布