我正在尝试通过与另一个对象进行比较来对对象数组进行排序。最终的数组需要将selected
对象显示在顶部,其余对象显示在其下方。
虽然我已经得到了想要的输出,但是我想知道是否可以进一步优化它。
let myArray = [
{ Name: 'Name 1', id: 1111 },
{ Name: 'Name 2', id: 2222 },
{ Name: 'Name 3', id: 3333 },
{ Name: 'Name 4', id: 4444 },
{ Name: 'Name 5', id: 5555 },
{ Name: 'Name 6', id: 6666 }]
let selected = { 1111: 'some value 1', 4444: 'some value 2' }
sortBySelected = (data) => {
var keys = Object.keys(selected);
return data.filter((obj) => {
if (keys.find((key) => {
return key === String(obj.id);
})) {
return true;
}
return false;
});
}
sortByNotSelected = (data) => {
var keys = Object.keys(selected);
return data.filter((obj) => {
if (keys.find((key) => {
return key === String(obj.id);
})) {
return false;
}
return true;
});
}
sort = (data) => {
data1 = sortBySelected(data);
data2 = sortByNotSelected(data);
return data1.concat(data2);
}
console.log(sort(myArray));