gpt4 book ai didi

javascript - 在javascript中用另一个对象数组排序

转载 作者:行者123 更新时间:2023-11-29 10:03:40 24 4
gpt4 key购买 nike

我正在尝试通过将对象数组与另一个对象进行比较来对对象数组进行排序。最终数组需要在顶部显示 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));

最佳答案

您可以将检查的增量与 in 运算符一起使用。

var array = [{ 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 }],
selected = { 1111: 'some value 1', 4444: 'some value 2' };

array.sort((a, b) => (b.id in selected) - (a.id in selected));

console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 在javascript中用另一个对象数组排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48783794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com