要按照一个对象属性的存在性对数组进行排序,可以使用Array.sort()方法和a.hasOwnProperty()方法实现。该方法会根据对象的指定属性的存在与否将其分为两组,并按照给定的顺序排序。如果有指定属性的元素在前面,则该元素比没有该属性的元素优先级更高。
示例代码:
// 定义用于排序的数组
let arrayToSort = [
{ name: 'A', age: 21 },
{ name: 'B' },
{ name: 'C', age: 25 },
{ age: 23 },
{ name: 'D' }
];
// 按 age 属性存在性排序,有 age 属性的元素排在前面,没有 age 属性的元素排在后面
arrayToSort.sort(function(a, b) {
if (a.hasOwnProperty('age') && !b.hasOwnProperty('age')) {
return -1;
} else if (!a.hasOwnProperty('age') && b.hasOwnProperty('age')) {
return 1;
} else {
return 0;
}
});
// 输出排序后的数组
console.log(arrayToSort);
以上代码将按照 age 属性的存在性对数组进行排序,有 age 属性的元素排在前面,没有 age 属性的元素排在后面。可以根据需要修改要排序的属性名和排序顺序。
上一篇:按属性拆分对象数组