如何在JavaScript中使用条件从2个数组创建新的json数组?
我有第一个样本数据如何在JavaScript中使用条件从2个数组创建新的json数组?,javascript,arrays,json,for-loop,Javascript,Arrays,Json,For Loop,我有第一个样本数据 [{start : 1,end : 10 }, {start : 11,end : 20 }, {start : 21,end : 30 }] 和第二个样本数据 [{weight : 7,price : 20 }, {weight : 8 ,price : 10}, {weight : 11 ,price : 14}] 我试图通过我的样本使用for循环,并检查重量是否在开始和结束之间。 例如,如果第二个样本的“重量:7,价格:20”介于第一个样本计数的“开始:1,
[{start : 1,end : 10 },
{start : 11,end : 20 },
{start : 21,end : 30 }]
和第二个样本数据
[{weight : 7,price : 20 },
{weight : 8 ,price : 10},
{weight : 11 ,price : 14}]
我试图通过我的样本使用for循环,并检查重量是否在开始和结束之间。
例如,如果第二个样本的“重量:7,价格:20”介于第一个样本计数的“开始:1,结束:10”之间,则第一个样本计数为1,而sumPrice为20
下一个循环是“重量:8”,价格:10,计数将是1+1,sumPrice是从第一次循环开始的20+10。然后也这样做
我的预期结果是这样的
[{ start : 1,end : 10 ,count : 2 , sumPrice : 30},
{ start : 11,end : 20 ,count : 1 , sumPrice : 14 },
{ start : 21,end : 30 ,count : 0 , sumPrice : 0 }]
顺便说一句,很抱歉我的英语水平,我是javascript新手。
提前感谢。您想在这里做的是将映射到您的条件数组上,然后减少您的数据数组
const arr1 = [{_id : 1 , start : 1,end : 10 },
{_id : 2 , start : 11,end : 20 },
{_id : 3 , start : 21,end : 30 }];
const arr2 = [{weight : 7,price : 20 },
{weight : 11 ,price : 10},
{weight : 8 ,price : 14}];
const result = arr1.map((condition) => {
return arr2.reduce((acc, curr) => {
if (curr.weight >= condition.start && curr.weight <= condition.end) {
return {
...acc,
count: acc.count + 1,
sumPrice: acc.sumPrice + curr.price,
}
}
return acc;
}, {
_id: condition._id,
start: condition.start,
end: condition.end,
count: 0,
sumPrice: 0,
})
});
console.log(result);
使用jsLinqlib 这里有很多有用的方法
window.onload=function(){
用于(范围内的var i){
var范围=范围[i];
//条件
var matchedItems=$linq(arr)。其中(r=>r.weight>=range.start
&&r.重量c.价格);
range.count=计数;
range.sumPrice=总和;
}
控制台日志(范围);
};
var ranges=[{{u id:1,start:1,end:10},
{{u id:2,开始:11,结束:20},
{u id:3,开始:21,结束:30}];
var arr=[{重量:7,价格:20},
{重量:11,价格:10},
{重量:8,价格:14}]代码>
您应该至少发布一点代码来展示您迄今为止所做的尝试。您好,请与我们分享您所做的尝试以及您面临的问题,我们希望您能付出一些努力,而不是编写所有代码计数
和sumPrice
值的标准是什么?请,你的问题,让它更清楚,并显示一些努力/代码我认为,id 1从1开始,在10结束,这意味着它处理重量7和重量8;计数等于2,和是20+14。顺便说一下,闻起来像是家庭作业。谢谢布雷特。你救了我一天!!