gpt4 book ai didi

Javascript 过滤和排序值

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

我正在尝试过滤和排序我的数据。它匹配数组中的所有值,它将位于数组的第一个。

const fruits = [
{name: 'banana', vitamins: ['Vitamin_C2', 'Vitamin_B']},
{name: 'orange', vitamins: ['Vitamin_B', 'Vitamin_A1', 'Vitamin_D']},
{name: 'apple', vitamins: ['Vitamin_C2', 'Vitamin_C', 'Vitamin_B']},
]

const vitaminsArray = ['Vitamin_C2', 'Vitamin_C', 'Vitamin_B'];

function filterAndSort(vitaminsArray) {
// enter amazing code here :P
}

// console.log(filterAndSort) expect output. it will filter vitamins object and sort the most on the first of the object.
[
{name: 'apple', vitamins: ['Vitamin_C2', 'Vitamin_C', 'Vitamin_B']},
{name: 'banana', vitamins: ['Vitamin_C2', 'Vitamin_B']},
{name: 'orange', vitamins: ['Vitamin_B', 'Vitamin_A1', 'Vitamin_D']},
]

我试过过滤,但无法进行排序。这是我的代码。

const filtered = fruits.filter(fruit => {
return vitaminsArray.some((type) => fruit.vitamins.includes(type));
})
// output
[
{name: 'banana', vitamins: ['Vitamin_C2', 'Vitamin_B']},
{name: 'apple', vitamins: ['Vitamin_C2', 'Vitamin_C', 'Vitamin_B']},
{name: 'orange', vitamins: ['Vitamin_B', 'Vitamin_A1', 'Vitamin_D']},
]

最佳答案

您可以按 intersection of the arrays 的长度排序vitaminsArrayvitamins。最长的结果意味着当前对象拥有来自 vitaminsArray

的最多项目

const fruits = [
{name: 'banana', vitamins: ['Vitamin_C2', 'Vitamin_B']},
{name: 'orange', vitamins: ['Vitamin_B', 'Vitamin_A1', 'Vitamin_D']},
{name: 'apple', vitamins: ['Vitamin_C2', 'Vitamin_C', 'Vitamin_B']},
];

const vitaminsArray = ['Vitamin_C2', 'Vitamin_C', 'Vitamin_B'];

const filtered = fruits.filter(fruit => {
return vitaminsArray.some((type) => fruit.vitamins.includes(type));
});

console.log("before sorting");
console.log(filtered);

const sorted = filtered.sort((a, b) => {
return vitaminsArray.filter(value => b.vitamins.includes(value)).length - vitaminsArray.filter(value => a.vitamins.includes(value)).length;
})

console.log("after sorting");
console.log(sorted);

关于Javascript 过滤和排序值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65389689/

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