Google可视化API需要这样的数组:
chmod +x -R /home/username/Android/Sdk
我有单独的列数组
var data = google.visualization.arrayToDataTable([
['Element', 'Density', { role: 'style' }],
['Copper', 8.94, '#b87333'], // RGB value
['Copper', 10.49, 'silver'], // English color name
['Gold', 19.30, 'gold'],
['Gold', 21.45, 'color: #e5e4e2' ], // CSS-style declaration
]);
表示值
var columns = ['Copper', 'Copper', 'Gold', 'Gold'];
和颜色
var values = [8.94, 10.49, 19.30, 21.45];
我是否真的需要编写具有多个条件的多级循环来构建此数组?或者有更简单的方法?
我不能var styles = ['#b87333', 'silver', 'gold', 'color: #e5e4e2'];
因为数组应该是完整的。
答案 0 :(得分:6)
使用Array#map
。
var columns = ['Copper', 'Copper', 'Gold', 'Gold'],
values = [8.94, 10.49, 19.30, 21.45],
styles = ['#b87333', 'silver', 'gold', 'color: #e5e4e2'],
res = columns.map((v,i) => [v, values[i], styles[i]]),
result = [['Element', 'Density', { role: 'style' }], ...res];
console.log(result);
答案 1 :(得分:2)
您可以将它们映射在一起,这是一个有效的fiddle
var columns = ['Copper', 'Copper', 'Gold', 'Gold'];
var values = [8.94, 10.49, 19.30, 21.45];
var styles = ['#b87333', 'silver', 'gold', 'color: #e5e4e2'];
var newArr = columns.map((item, index) => {return [columns[index], values[index], styles[index]]})
console.log(newArr) //=> ['Copper', 8.94, '#b87333'],
//['Copper', 10.49, 'silver'],
//['Gold', 19.30, 'gold'],
//['Gold', 21.45, 'color: #e5e4e2' ],
答案 2 :(得分:1)
听起来你只需要不可变地复制数组,然后用它做任何你想做的事情。试试这个:
// ES6
var myArr = [1, 2, 3]
var newArr = [ ...myArr ]
// ES5
var myArr = [1, 2, 3];
var newArr = [].concat(myArr);
答案 3 :(得分:1)
使用reduce
函数的ES6解决方案
var columns = ['Copper', 'Copper', 'Gold', 'Gold'];
var values = [8.94, 10.49, 19.30, 21.45];
var styles = ['#b87333', 'silver', 'gold', 'color: #e5e4e2'];
// Reduce all arrays to one vlaue
var result = columns.reduce((acc, init, i) => {
acc.push([init, values[i], styles[i]])
return acc
}, [])
var out = [
['Element', 'Density', { role: 'style' }],
...result
]
console.log(out)