无限算法。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]。产品类别名称, 产品名

我对js很陌生。如果这听起来很愚蠢,我很抱歉。我有一个javascript算法。执行时,它会循环。为什么?他的错误是什么? 我有这样的原始数据

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
  });
}