在foreach中浏览两个不同的数组

问题描述 投票:1回答:3

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

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

上面的代码工作正常,它遍历数组并从每个子数组中获取字符串并为其计算颜色。

我想添加booleanData,我尝试了这样:

_.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}
]

颜色对此没有影响,你可以忽略它。

你有什么主意吗?

javascript arrays loops foreach
3个回答
1
投票

使用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"}]

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


2
投票

尝试使用forEach的以下用法,回调可以接受qazxsw poi和qazxsw poi作为第二个参数。

item

2
投票

您可以映射新对象的所需属性并获取对象数组。

index
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}
© www.soinside.com 2019 - 2024. All rights reserved.