我正在尝试以特定方式合并两个数组,但无法找到正确的语法来执行此操作。
primaryData = [1,2]
secondaryData = [3,4]
label = [label1, label2]
目前正常运作
data = $.map(labels, function(v, i) {
return [[" " + v, " " + primaryData[i], " " + secondaryData[i]]] ;
});
并给我输出:
[["label1", "1"], ["label2", "2"]]
数组中有两个数组。
但是我想要这个:
[["label1", "1"], ["label2", "2"], ["label1", "3"], ["label2", "4"]]
所以基本上用“标签”两次做同样的事情,然后从两个不同的来源添加数字。
我试过这个:
data = $.map(labels, function(v, i) {
return [[" " + v, " " + primaryData[i]], [" " + v, " " + secondaryData[i]]];
});
但这为我提供了:
[["label1", "1"], ["label1", "3"], ["label2", "2"], ["label2", "4"]]
因此,似乎数组以串联方式合并。使用+而不是逗号分隔不会在数组中创建2个数组,而是在数组中创建2个对象。
答案 0 :(得分:1)
您可以使用简单的for循环“
var data = [];
for(var i = 0; i < 4; i++) {
data.push(["label" + (i % 2 + 1), (i + 1).toString()]);
}
console.log(data);
答案 1 :(得分:1)
您可以连结primaryData
和secondaryData
,然后使用余数运算符和迭代数组的值映射label
的值。
var primaryData = [1, 2],
secondaryData = [3, 4],
label = ['label1', 'label2'],
result = primaryData.concat(secondaryData).map(function(a, i) {
return [label[i % 2], a.toString()];
});
console.log(result);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;