1. 程式人生 > 其它 >js函式既可以接收單個引數也可以接收陣列的方法

js函式既可以接收單個引數也可以接收陣列的方法

-

在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]);
}

-