gpt4 book ai didi

javascript - 当对象包含值时重新排序对象数组

转载 作者:行者123 更新时间:2023-12-04 16:24:09 25 4
gpt4 key购买 nike

当在另一个数组中找到值时,我想将项目移动到数组的顶部。

const data = [
{ value: 'BMW', count: 1 },
{ value: 'AUDI', count: 1 },
{ value: 'VAUXHALL', count: 1 },
{ value: 'FIAT', count: 1 },
{ value: 'HONDA', count: 1 },
{ value: 'LANDROVER', count: 1 },
];

const selected = [ 'AUDI', 'HONDA' ];

所以基本上上面会变成:

const data = [
{ value: 'AUDI', count: 1 },
{ value: 'HONDA', count: 1 },
{ value: 'BMW', count: 1 },
{ value: 'VAUXHALL', count: 1 },
{ value: 'FIAT', count: 1 },
{ value: 'LANDROVER', count: 1 },
];

这是我目前所拥有的,但是它并没有按预期工作,而且一点都不好:

let prepend = [];
selected.forEach(selected => {
for (let i = 0; i < data.length; i++) {
if (data[i] && data[i].value === selected) {
prepend.push(data[i]);
delete data[i];
break;
}
}
})
data.unshift(...prepend);
data = data.filter(Boolean);

我想做一些像这样更干净的事情:

return [...data].sort((a, b) => {

});

最佳答案

您可以利用 Array#includes 的 bool 算术运算和 Array#sort .

const data = [
{ value: 'BMW', count: 1 },
{ value: 'AUDI', count: 1 },
{ value: 'VAUXHALL', count: 1 },
{ value: 'FIAT', count: 1 },
{ value: 'HONDA', count: 1 },
{ value: 'LANDROVER', count: 1 },
];

const selected = [ 'AUDI', 'HONDA' ];

data.sort((a, b) => selected.includes(b.value) - selected.includes(a.value))
console.log(data);

关于javascript - 当对象包含值时重新排序对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68637927/

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