首页 > 解决方案 > 将公司和联系人数组组合成由第三个数组排序的单个结果

问题描述

我正在尝试创建一个result由公司和联系人条目组成的组合数组。

结果数组应该有一个公司条目,后跟他们各自的联系人条目数,如amount数组所示。

这是我已经尝试过的:

var company = [company1,company2,company3]
var contacts = [contact1,contact2,contact3,contact4,contact5,contact6]
var amount = [2,1,3]
var result = []

for (let i = 0; i < company.length; i++) {
   result.push(company[i])
  for (let x = 0; x < amount[i]; x++) {
    result.push(contacts[x])
  }
}

output = [{result}]

我的预期输出是:

result = [company1,contact1,contact2,company2,contact3,company3,contact4,contact5,contact6]

如果我可以在每个公司内部创建一个数组会很棒。

标签: javascriptarraysloops

解决方案


您的代码非常接近。

在处理当前公司的联系人时,您只需考虑已经推送到结果数组中的联系人,而不是每次都从列表的开头开始。

var company = ['company1','company2','company3'];
var contacts = ['contact1','contact2','contact3','contact4','contact5','contact6'];
var amount = [2,1,3];
var result = [];
let c = 0;

for (let i = 0; i < company.length; i++) {
  result.push(company[i]);
  
  for (let j = 0; j < amount[i]; j++) {
    result.push(contacts[c]);
    c++;
  }
}

console.log(result);


推荐阅读