场景:在cesium中,绘制几何图形,一次可以绘制一个,也可以绘制多个;所以很多方法就需要支持传入一个图元信息,也支持传入多个图元信息;
思路:无论是单个参数还是数组,进入函数后都把它放入一个数组中,然后把这个数组展开成一维数组;
下面是实现这种函数的3种方法
1、无论是数组还是单个值都用数组的concat方法并入数组(虽然只是展平一层,但是已经满足了日常的开发需求)
function fnConcat(param) {
const data = [].concat(param);
}
2、用es6的flat方法展平数组(可接受单个值和多维数组)
function fnFlat(param) {
let data = [param].flat(Infinity);
}
3、自定义一个数组展平的方法(可接受单个值和多维数组)
展平数组的方法:
function flatten(arr) {
return [].concat(
...arr.map(item => Array.isArray(item) ? flatten(item) : item)
)
}
在需要用到的函数中使用:
function fnFlatten(param) {
const data = flatten([param]);
}