/**
* 数组对象排序
* @param {Array} arr 需要排序的对象数组
* @param {string} key 排序的关键字
* @param {boolean} flag 如果是true, 则正序,否则倒序
* */
function arrObjCompare(arr, key, flag) {
arr = Object.assign([], arr); // 如果带这一行,则不改变原数组排序,不带则改变原数组排序
return arr.sort((a, b) => {
if (a[key] > b[key]) {
return flag ? 1 : -1
} else if (a[key] < b[key]) {
return flag ? -1 : 1
} else {
return 0
}
})
}
测试代码,直接粘贴就能看到输出结果
var str = [
{ id: 7 },
{ id: 9 },
{ id: 2 },
{ id: 5 },
];
function arrObjCompare(arr, key, flag) {
arr = Object.assign([], arr); // 如果带这一行,则不改变原数组排序,不带则改变原数组排序
return arr.sort((a, b) => {
if (a[key] > b[key]) {
return flag ? 1 : -1
} else if (a[key] < b[key]) {
return flag ? -1 : 1
} else {
return 0
}
})
}
console.log('排序结果', arrObjCompare(str, 'id', true));
console.log('原数组', str);
|