Javascript 在foreach中遍历两个不同的数组

Javascript 在foreach中遍历两个不同的数组,javascript,arrays,loops,foreach,Javascript,Arrays,Loops,Foreach,我有两个不同的数组,它们的长度相同 myData = [["site_1", 3722, 2938, 2529, 3419, 3495, 3477], ["site_2", 115, 55, 56, 111, 113, 124], ["site_3", 13, 11, 10, 17, 17, 16], ["site_4", 16, 11, 10, 17, 17, 16], ["site_5", 0, 0, 0, 0,

我有两个不同的数组,它们的长度相同

myData = [["site_1", 3722, 2938, 2529, 3419, 3495, 3477],
          ["site_2", 115, 55, 56, 111, 113, 124],
          ["site_3", 13, 11, 10, 17, 17, 16],
          ["site_4", 16, 11, 10, 17, 17, 16],
          ["site_5", 0, 0, 0, 0, 0, 0]
         ];

booleanData = [true, false, false, true, true];
我已经在使用第一个数组来计算一些数据,我想使用第二个数组来为数组的每个元素添加这些信息

_.chain(myCtrl.chartData.myData).forEach(data => {
myCtrl.legendData.push({
    siteName: data[0],
    color: myCtrl.chartData.chart.color(data[0])
});
}).value();
上面的代码工作正常,它遍历数组,从每个子数组中获取字符串,并为其计算颜色

我想添加
布尔数据
,我试着这样做:

_.chain(myCtrl.chartData.myData).forEach(data => {
myCtrl.legendData.push({
    siteName: data[0],
    color: myCtrl.chartData.chart.color(data[0]),
    hasIt: myCtrl.chartData.booleanData[data]
});
}).value();
我知道参数不应该是
[data]
,但我不知道如何才能正常工作

在本例中,我希望的结果是
legendData
为:

[ {siteName: "name_1", color: "#4ae412", hasIt: true},
  {siteName: "name_2", color: "#4ae412", hasIt: false},
  {siteName: "name_3", color: "#4ae412", hasIt: false},
  {siteName: "name_4", color: "#4ae412", hasIt: true},
  {siteName: "name_5", color: "#4ae412", hasIt: true}
]
颜色对此没有影响,您可以忽略它


你知道吗?

试试下面的forEach用法,回调可以将
索引
作为第二个参数

var myData = [["site_1", 3722, 2938, 2529, 3419, 3495, 3477],
          ["site_2", 115, 55, 56, 111, 113, 124],
          ["site_3", 13, 11, 10, 17, 17, 16],
          ["site_4", 16, 11, 10, 17, 17, 16],
          ["site_5", 0, 0, 0, 0, 0, 0]
         ];

var booleanData = [true, false, false, true, true];

var result = {};
myData.forEach((item, index) => {
    let name = item[0]
    result[name] = booleanData[index]
})
console.log(result)
// {site_1: true, site_2: false, site_3: false, site_4: true, site_5: true}

尝试以下forEach用法,回调可以将
索引
作为第二个参数

var myData = [["site_1", 3722, 2938, 2529, 3419, 3495, 3477],
          ["site_2", 115, 55, 56, 111, 113, 124],
          ["site_3", 13, 11, 10, 17, 17, 16],
          ["site_4", 16, 11, 10, 17, 17, 16],
          ["site_5", 0, 0, 0, 0, 0, 0]
         ];

var booleanData = [true, false, false, true, true];

var result = {};
myData.forEach((item, index) => {
    let name = item[0]
    result[name] = booleanData[index]
})
console.log(result)
// {site_1: true, site_2: false, site_3: false, site_4: true, site_5: true}

您可以映射新对象所需的属性,并获得一系列对象

var myData=[[“site_1”、3722、2938、2529、3419、3495、3477]、“site_2”、115、55、56、111、113、124]、“site_3”、13、11、10、17、17、17、16]、“site_4”、16、11、10、17、16]、“site_5”、0、0、0、0、0],
booleanData=[true,false,false,true,true],
result=myData.map(([siteName],i)=>({siteName,color:#4ae412,hasIt:booleanData[i]});
控制台日志(结果)

。作为控制台包装器{max height:100%!important;top:0;}
您可以映射新对象的所需属性并获得一系列对象

var myData=[[“site_1”、3722、2938、2529、3419、3495、3477]、“site_2”、115、55、56、111、113、124]、“site_3”、13、11、10、17、17、17、16]、“site_4”、16、11、10、17、16]、“site_5”、0、0、0、0、0],
booleanData=[true,false,false,true,true],
result=myData.map(([siteName],i)=>({siteName,color:#4ae412,hasIt:booleanData[i]});
控制台日志(结果)

.as console wrapper{max height:100%!important;top:0;}
使用forEach并严格按照您的要求保存,您可以获得如下结果:

var myData = [["site_1", 3722, 2938, 2529, 3419, 3495, 3477],
          ["site_2", 115, 55, 56, 111, 113, 124],
          ["site_3", 13, 11, 10, 17, 17, 16],
          ["site_4", 16, 11, 10, 17, 17, 16],
          ["site_5", 0, 0, 0, 0, 0, 0]
         ];

var booleanData = [true, false, false, true, true], legendData = [];

myData.forEach(function(x, i){
    legendData.push({sitename: myData[i][0], color: '#4ae412', hasIt: booleanData[i]});
});

console.log(legendData); // [{color: "#4ae412", hasIt: true, sitename: "site_1"}, {color: "#4ae412", hasIt: false, sitename: "site_2"}, {color: "#4ae412", hasIt: false, sitename: "site_2"}, {color: "#4ae412", hasIt: true, sitename: "site_4"}, {color: "#4ae412", hasIt: true, sitename: "site_5"}]

这是你的颜色硬编码,因为我不知道你是如何计算出颜色的。但您可以简单地进行计算并将其存储为变量,然后用所述变量替换硬编码的颜色。

使用forEach并严格按照您的要求保存,您可以得到如下结果:

var myData = [["site_1", 3722, 2938, 2529, 3419, 3495, 3477],
          ["site_2", 115, 55, 56, 111, 113, 124],
          ["site_3", 13, 11, 10, 17, 17, 16],
          ["site_4", 16, 11, 10, 17, 17, 16],
          ["site_5", 0, 0, 0, 0, 0, 0]
         ];

var booleanData = [true, false, false, true, true], legendData = [];

myData.forEach(function(x, i){
    legendData.push({sitename: myData[i][0], color: '#4ae412', hasIt: booleanData[i]});
});

console.log(legendData); // [{color: "#4ae412", hasIt: true, sitename: "site_1"}, {color: "#4ae412", hasIt: false, sitename: "site_2"}, {color: "#4ae412", hasIt: false, sitename: "site_2"}, {color: "#4ae412", hasIt: true, sitename: "site_4"}, {color: "#4ae412", hasIt: true, sitename: "site_5"}]

这是你的颜色硬编码,因为我不知道你是如何计算出颜色的。但您可以简单地进行计算并将其存储为变量,然后用所述变量替换硬编码的颜色。

请同时添加所需的结果。@NinaScholz我希望forEach对
booleanData
使用的元素与对
myData
使用的元素相同。要在它们之间创建一对值,它们具有相同的length@rareșmigea:请显示您想要接收的代码结果,而不是用文字解释;这样就容易多了:)@DavidThomas我现在编辑了它,请同时添加想要的结果。@NinaScholz我希望forEach对
booleanData
使用的元素与对
myData
使用的元素相同。要在它们之间创建一对值,它们具有相同的length@rareșmigea:请显示您想要接收的代码结果,而不是用文字解释;这样就容易多了:)@DavidThomas我现在编辑它谢谢你的回答,它似乎是正确的,但在我的情况下它不适合,因为我不能在我的代码中更改太多,它可能会影响其他功能谢谢你的回答,它似乎是正确的,但在我的情况下它不适合,因为我不能在我的代码中更改太多,它可能会影响其他功能