Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中使用lambda比较列表中的两个对象_Javascript_List_Arraylist - Fatal编程技术网

在javascript中使用lambda比较列表中的两个对象

在javascript中使用lambda比较列表中的两个对象,javascript,list,arraylist,Javascript,List,Arraylist,我想我可以用20行代码自己完成这项工作。但我认为它可以是一行 假设我们有一个1轮、2轮或3轮汽车的列表 汽车[]=[C1、C2、C3、C4、C5、C6] C1-C3只有一个轮子,C4有两个,C5-C6有三个 class Car{ constructor(wheels){ this.wheels = wheels; } } 我想要这个结果: 过滤器硬盘[]=[[C1、C2、C3]、[C4]、[C5、C6]] 或 过滤器数据卡[]=[[C1,C2,C3],[C5,C6] =

我想我可以用20行代码自己完成这项工作。但我认为它可以是一行

假设我们有一个1轮、2轮或3轮汽车的列表

汽车[]=[C1、C2、C3、C4、C5、C6]

C1-C3只有一个轮子,C4有两个,C5-C6有三个

class Car{
   constructor(wheels){
      this.wheels = wheels;
   }
}
我想要这个结果:

过滤器硬盘[]=[[C1、C2、C3]、[C4]、[C5、C6]]

过滤器数据卡[]=[[C1,C2,C3],[C5,C6]

=>我需要“轮子”中哪些对象具有相同值的信息

轮子在我的项目中是字符串,可能有48个不同的值,因此我需要比较carX===carY

我的“尝试”就像(“伪代码”):


首先按车轮数对汽车进行分组,然后抓住每组的汽车

你可以这样一行就完成

let id=0;
班车{
建造师(车轮){
this.id=++id;
这个。轮子=轮子;
}
}
常数数据=[
新车(“1”),
新车(“1”),
新车(“1”),
新车(“2”),
新车(“3”),
新车(“3”),
];
const res=[…data.reduce((acc,el)=>acc.set(el.wheels,[…(acc.get(el.wheels)| |[]),el]),new Map()).values();

console.log(res);
根据我对您的问题的理解。您只需

 const Cars = [C1,C2,C3,C4,C5,C6]
const FilteredCars =[Cars.filter(car=>car.wheels===1),Cars.filter(car=>car.wheels===2),Cars.filter(car=>car.wheels===3)]

你会得到[[C1,C2,C3],[C4],[C5,C6]]这种结果

我怎么知道C1-C3只有一个轮子,C4两个,C5-C6三个,CX是一个物体吗?@hgb123是的,sry忘了给班级上课了。我编辑了这个问题。谢谢vm!我会尝试将它改编成我的项目。你能解释一下这一行发生了什么吗?我想理解:)“el”是车u迭代。但是什么是“acc”?逻辑在哪里,你按车轮数分组?@psclp
acc
是累积值,这里用一个映射初始化,每个循环,映射将被适当的值填充,你可以用reduce:
arr.reduce((acc,el)作为简单的求和计算示例=>acc+el,0)
这是否意味着它仅在wheels为int-right时才起作用?在我的项目中,“wheels”是字符串。因此我需要比较carX===carY来筛选。nvm它也与字符串一起工作。谢谢!在我的项目Cars.wheels中有3个以上不同的值。如果我按不同的值进行筛选,这将是一个很长的一行线:D。
 const Cars = [C1,C2,C3,C4,C5,C6]
const FilteredCars =[Cars.filter(car=>car.wheels===1),Cars.filter(car=>car.wheels===2),Cars.filter(car=>car.wheels===3)]