sortArr为要进行排序数组,standardArr为排序模板,sortField根据对象某个字段来排序
第一种方式
export function sortCommon1(sortArr, standardArr, sortField) {
var compare = function (obj1, obj2) {
var obj1Value, obj2Value;
standardArr.forEach(function (v, k) {
if (v == obj1[sortField]) {
obj1Value = k;
} else if (v == obj2[sortField]) {
obj2Value = k;
}
});
return obj1Value - obj2Value;
};
return sortArr.sort(compare);
}
const sortArr = [
{ value: '3年' },
{ value: '1年' },
{ value: '2年' },
{ value: '1年' },
{ value: '3年' },
{ value: '3年' }
];
const standardArr = ['1年', '2年', '3年'];
console.log(sortCommon1(sortArr, standardArr, 'value'));
第二种方式 简洁版
export function sortCommon2(sortArr, standardArr, sortField) {
sortArr.sort(function (a, b) {
return standardArr.indexOf(a[sortField]) - standardArr.indexOf(b[sortField]);
})
}
const sortArr = [
{ value: '3年' },
{ value: '1年' },
{ value: '2年' },
{ value: '1年' },
{ value: '3年' },
{ value: '3年' }
];
const standardArr = ['1年', '2年', '3年'];
sortCommon2(sortArr, standardArr, 'value')
console.log(sortArr);
输出结果