【问题标题】:Combine company and contact arrays into single result ordered by third array将公司和联系人数组组合成由第三个数组排序的单个结果
【发布时间】:2021-06-09 05:22:13
【问题描述】:

我正在尝试创建一个由公司和联系人条目组成的组合 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]

如果我可以在每个公司内部创建一个数组,那就太好了。

【问题讨论】:

  • 您到底想达到什么目的。不是很清楚。请具体...
  • 只需添加每个公司的联系人数量(每个公司在数组数量上的联系人数量)所以 company1 里面应该有 2 个联系人
  • @LeandroConti,我不明白你关于每个公司内部数组的问题的最后一行。您能否更新您的问题以显示它的外观?

标签: javascript arrays loops


【解决方案1】:

您的代码非常接近。

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

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

【讨论】:

    猜你喜欢
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 2020-06-28
    • 1970-01-01
    • 2022-01-16
    相关资源
    最近更新 更多