我有一些标签为空的元素数组:
let array= [
{category1:{id: 'aaa1', label:'bbb'}},
{category1:{id: 'aaa2', label:null}},
{category1:{id: 'aaa3', label:null}},
{category1:{id: 'aaa4', label:'ccc'}},
{category1:{id: 'aaa5', label:'ddd'}},
];
我想按属性标签对该数组排序,并将null理解为”。所以我有这样的代码:
const sortingMethod = ({ category1: { label: elementALabel = '' } }, { category1: { label: elementBLabel = '' } }) => elementALabel.localeCompare(elementBLabel);
array.sort(sortingMethod );
问题是elementAlabel有时似乎为空。错误是“无法读取null的属性'localeCompare'”。问题出在哪里?
解构中的默认值仅在值为undefined
时适用。如果需要在null
中使用默认值,请使用或(||
)-(elementALabel || '')
进行短路评估。如果elementALabel
是一个伪造的值(在这种情况下为null
),则该表达式将求值为空字符串。
let array= [
{category1:{id: 'aaa1', label:'bbb'}},
{category1:{id: 'aaa2', label:null}},
{category1:{id: 'aaa3', label:null}},
{category1:{id: 'aaa4', label:'ccc'}},
{category1:{id: 'aaa5', label:'ddd'}},
];
const sortingMethod = ({ category1: { label: elementALabel } }, { category1: { label: elementBLabel } }) => (elementALabel || '').localeCompare(elementBLabel || '');
array.sort(sortingMethod)
console.log(array);