我有两个不同的数组,长度相同。
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}
]
颜色对此没有影响,你可以忽略它。
你有什么主意吗?
使用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的以下用法,回调可以接受qazxsw poi和qazxsw poi作为第二个参数。
item
您可以映射新对象的所需属性并获取对象数组。
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}