3 回答

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊
您可以返回number被比較的每個(gè)對象上的屬性是否存在之間的差異,或者返回它們number屬性的差異(如果兩個(gè)對象都具有所述屬性):
var array = [
{ number: 2 },
{},
{ number: 1 }
];
array.sort((a, b) => {
const aHas = typeof a.number !== 'undefined';
const bHas = typeof b.number !== 'undefined';
return (bHas - aHas) || (aHas === true && a.number - b.number) || 0;
});
console.log(array);

TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊
您可以為具有對象擴(kuò)展的數(shù)組元素提供默認(rèn)值: {default, ...item}
var array = [
{ number: 2 },
{},
{ number: 1 },
{},
{ number: 0 },
];
array.sort((a, b) => (
{number: Number.MAX_VALUE, ...a}.number -
{number: Number.MAX_VALUE, ...b}.number));
console.log(array);
如果您的目標(biāo)尚不支持對象擴(kuò)展,請將其替換為Object.assign
.

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
解釋在評論中:
let array = [
{},
{ number: 2 },
{},
{ number: 1 }
];
array.sort((a, b) => {
// two undefined values should be treated as equal ( 0 )
if( typeof a.number === 'undefined' && typeof b.number === 'undefined' )
return 0;
// if a is undefined and b isn't a should have a lower index in the array
else if( typeof a.number === 'undefined' )
return 1;
// if b is undefined and a isn't a should have a higher index in the array
else if( typeof b.number === 'undefined' )
return -1;
// if both numbers are defined compare as normal
else
return a.number - b.number;
});
console.log( array );
添加回答
舉報(bào)