[英]filter and sum data from 2 array of objects to a new array in JS
我有 2 个 JavaScript 对象的 arrays :
const typeCrop = [
{ id: 1, name: 'apple' },
{ id: 2, name: 'pineapple' },
{ id: 3, name: 'orange' },
{ id: 4, name: 'berry' },
]
const lands = [
{ landOwnerId: 6, landId: 1, landTypeID: 1, area: 3800 },
{ landOwnerId: 1, landId: 3, landTypeID: 4, area: 6500 },
{ landOwnerId: 5, landId: 3, landTypeID: 2, area: 9000 },
{ landOwnerId: 2, landId: 2, landTypeID: 3, area: 6600 },
{ landOwnerId: 3, landId: 1, landTypeID: 1, area: 980 },
{ landOwnerId: 5, landId: 2, landTypeID: 2, area: 5900 },
{ landOwnerId: 3, landId: 3, landTypeID: 2, area: 1080 },
{ landOwnerId: 2, landId: 3, landTypeID: 3, area: 2220 },
{ landOwnerId: 4, landId: 3, landTypeID: 4, area: 5700 },
{ landOwnerId: 2, landId: 3, landTypeID: 3, area: 8700 },
{ landOwnerId: 3, landId: 2, landTypeID: 2, area: 910 },
{ landOwnerId: 3, landId: 1, landTypeID: 1, area: 1770 },
{ landOwnerId: 2, landId: 2, landTypeID: 2, area: 9860 }
];
我是一名新程序员,需要根据每个作物的面积总和,制作一个数组,其中作物类型的名称从大到小排序。
在“lands”数组中,我尝试按 landTypeID 排序并对区域求和,然后获取 landTypeID 并使其与“typeCrop”数组中的 id 匹配,并将作物类型的名称添加到我的新数组中
如果面积总和:苹果总面积100,菠萝总面积50,橙子总面积70,浆果总面积80
预期结果: [apple, berry, orange,pineapple]
-o-
我列出了土地所有者的税号,但无法获得按作物类型对土地进行分类的数据
function listIDLandOwnerByName() {
landOwners.sort(function(a, b) {
if (a.name < b.name)
return -1;
if (a.name > b.name)
return 1;
return 0;
})
return landOwners.map((landOwner) => landOwner.taxNumber);
};
console.log(listIDLandOwnerByName());
这是一个经典的map-reduce问题,所以我使用了相同的方法。 最后,我进行了自定义排序比较。
const typeCrop = [ { id: 1, name: 'apple' }, { id: 2, name: 'pineapple' }, { id: 3, name: 'orange' }, { id: 4, name: 'berry' }, ] const lands = [ { landOwnerId: 6, landId: 1, landTypeID: 1, area: 3800 }, { landOwnerId: 1, landId: 3, landTypeID: 4, area: 6500 }, { landOwnerId: 5, landId: 3, landTypeID: 2, area: 9000 }, { landOwnerId: 2, landId: 2, landTypeID: 3, area: 6600 }, { landOwnerId: 3, landId: 1, landTypeID: 1, area: 980 }, { landOwnerId: 5, landId: 2, landTypeID: 2, area: 5900 }, { landOwnerId: 3, landId: 3, landTypeID: 2, area: 1080 }, { landOwnerId: 2, landId: 3, landTypeID: 3, area: 2220 }, { landOwnerId: 4, landId: 3, landTypeID: 4, area: 5700 }, { landOwnerId: 2, landId: 3, landTypeID: 3, area: 8700 }, { landOwnerId: 3, landId: 2, landTypeID: 2, area: 910 }, { landOwnerId: 3, landId: 1, landTypeID: 1, area: 1770 }, { landOwnerId: 2, landId: 2, landTypeID: 2, area: 9860 } ]; const groupByCrop=typeCrop.map(c=>( {name:c.name,totalArea:lands.reduce((prev,curr)=>curr.landTypeID===c.id?prev+curr.area:prev,0)} )) const cropsSorted=groupByCrop.sort((a,b)=>a.totalArea>b.totalArea?1:-1).map(crop=>crop.name); console.log(cropsSorted);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.