无限算法。javascript
我对js很陌生。如果这听起来很愚蠢,我很抱歉。我有一个javascript算法。执行时,它会循环。为什么?他的错误是什么? 我有这样的原始数据无限算法。javascript,javascript,arrays,algorithm,Javascript,Arrays,Algorithm,我对js很陌生。如果这听起来很愚蠢,我很抱歉。我有一个javascript算法。执行时,它会循环。为什么?他的错误是什么? 我有这样的原始数据 let incomasarray=[]; 杂乱无章[0]={ 收入者id:incomeList[0]。id, 工人id:incomeList[0]。工人id, 工人姓:非融合者[0]。工人姓, 工人姓名:收入者[0]。工人姓名, 非融合者:[ { 提供程序名称:incomeList[0]。提供程序名称, 产品类别:收入列表[0]。产品类别名称, 产品名
let incomasarray=[];
杂乱无章[0]={
收入者id:incomeList[0]。id,
工人id:incomeList[0]。工人id,
工人姓:非融合者[0]。工人姓,
工人姓名:收入者[0]。工人姓名,
非融合者:[
{
提供程序名称:incomeList[0]。提供程序名称,
产品类别:收入列表[0]。产品类别名称,
产品名称:incomeList[0]。产品名称,
产品计数:收入列表[0]。产品计数,
采购价格:收入列表[0]。采购价格
}
],
收入者:收入者[0]。日期,
总计:收入表[0]。总计
}
如果(不规则长度>0){
for(设i=1;i
如果有任何帮助或提示,我将不胜感激。是您的
其他部分造成了问题。对于incomearray
中与incomeList
中的项目具有不同id
的每个项目,您可以在incomearray
中添加另一个条目;当您在该数组上迭代时。像这样的gif:
在赛道上行驶时延长赛道
其次,你的比较:if(incomeList[i].id==incomesArray[j].id)
但是incomesArray[j]
没有id
,只有income\u id
,所以你总是会遇到else
部分,在那里你会向incomesArray
添加更多的项目
我对您的代码进行了一些重构:
const incomesArray = [];
for (const row of incomeList) {
let target = incomesArray.find(item => item.income_id === row.id);
if (!target) {
incomesArray.push(target = {
income_id: row.id,
worker_id: row.worker_id,
worker_surname: row.worker_surname,
worker_name: row.worker_name,
incomeList: [],
incomeDate: row.date,
total: row.total
});
}
target.incomeList.push({
provider_name: row.provider_name,
product_category: row.product_category_name,
product_name: row.product_name,
product_count: row.product_count,
purchase_price: row.purchase_price
});
}
const incomesArray = [];
for (const row of incomeList) {
let target = incomesArray.find(item => item.income_id === row.id);
if (!target) {
incomesArray.push(target = {
income_id: row.id,
worker_id: row.worker_id,
worker_surname: row.worker_surname,
worker_name: row.worker_name,
incomeList: [],
incomeDate: row.date,
total: row.total
});
}
target.incomeList.push({
provider_name: row.provider_name,
product_category: row.product_category_name,
product_name: row.product_name,
product_count: row.product_count,
purchase_price: row.purchase_price
});
}