Javascript过滤器和排序值

Javascript过滤器和排序值,javascript,sorting,filter,Javascript,Sorting,Filter,我正在尝试筛选和排序我的数据。它与数组中的所有值匹配,它将位于数组的第一个值 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', 'Vitami

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

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']},
   ]

您可以执行以下操作:

常数=[
{名称:'香蕉',维生素:['维生素C2','维生素B']},
{名称:'orange',维生素:['Vitamin_B','Vitamin_A1','Vitamin_D'],
{名称:'apple',维生素:['Vitamin_C2','Vitamin_C','Vitamin_B'],
]
常量维生素数组=['Vitamin_C2','Vitamin_C','Vitamin_B'];
函数filterAndSort(){
返回水果。排序((a,b)=>{
a、 vitamins=a.vitamins.filter(项目=>vitaminsArray.includes(项目));
b、 维生素=b.Vitains.filter(项目=>vitaminsArray.includes(项目));
让a匹配=a.长度;
设b匹配=b.长度;
返回bMatch-aMatch;
});
}
log(filterAndSort());
//日志(filterAndSort)预期输出。它将过滤对象,并对第一个对象的最大值进行排序。
/* [
{名称:'apple',维生素:['Vitamin_C2','Vitamin_C','Vitamin_B'],
{名称:'香蕉',维生素:['维生素C2','维生素B']},

]*/
您可以根据
维生素数组
维生素
的长度进行排序。最长的结果意味着当前对象在
vitaminsArray

常数=[
{名称:'香蕉',维生素:['维生素C2','维生素B']},
{名称:'orange',维生素:['Vitamin_B','Vitamin_A1','Vitamin_D'],
{名称:'apple',维生素:['Vitamin_C2','Vitamin_C','Vitamin_B'],
];
常量维生素数组=['Vitamin_C2','Vitamin_C','Vitamin_B'];
const filtered=水果。过滤器(水果=>{
返回vitaminsArray.some((type)=>fruit.vitamins.includes(type));
});
控制台日志(“排序前”);
console.log(过滤);
常量排序=已筛选。排序((a,b)=>{
返回vitaminsArray.filter(值=>b.vitamins.includes(值)).length-vitaminsArray.filter(值=>a.vitamins.includes(值)).length;
})
控制台日志(“排序后”);

控制台日志(已排序)操作。对不起,我打错了。谢谢你提出来!您没有调用排序函数谢谢您花时间共享代码并解决了我的问题=)更新了代码以过滤维生素。酷。谢谢分享来教我!