Вы можете найти количество заданных company
и отсортировать сначала по company
, а затем по количеству.Имея стабильную сортировку, остальные элементы не сортируются в конце массива.
function sort(array, company) {
var count = array.find(([c]) => c === company)[1].count;
return array.some((c => ({ 1: { count: v } }) => v === count && ++c === 2)(0))
? array.sort((a, b) =>
(b[0] === company) - (a[0] === company) ||
(b[1].count === count) - (a[1].count === count)
)
: array;
}
var array = [
["company1", { count: 3 }],
["company3", { count: 1 }],
["company2", { count: 3 }],
["company4", { count: 0 }],
["company5", { count: 0 }]
];
console.log(sort(array, "company2"));
console.log(sort(array, "company3"));
console.log(sort(array, "company5"));
.as-console-wrapper { max-height: 100% !important; top: 0; }