Вы можете использовать оператор ||
для возврата -1, когда ваше условие и !b
истинно.
Мы также знаем, что если a
не определено (!a
), оно вернется 1
поэтому мы должны убедиться, что для возврата a
определено, в противном случае мы вернем 1.
let keyedComponentTypes = [
{
text: 'b'
},
{
text: 'a'
},
{
text: 'e'
},
{
text: 'd'
},
{
text: 'c'
},
]
function originalSortComponents (a, b) {
if (!a) {
return 1
}
if (!b) {
return -1
}
return keyedComponentTypes[a].text > keyedComponentTypes[b].text ? -1 : 1
}
function improvedSortComponent(a,b) {
return a && ((keyedComponentTypes[a].text > keyedComponentTypes[b].text) || !b) ? -1 : 1
}
let array = [0,undefined,1,2,3,undefined,4]
console.log(array.sort(originalSortComponents));
console.log(array.sort(improvedSortComponent));
Вы можете видеть, что он возвращает одно и то же в обоих случаях.