javascript數(shù)組拍平方法有哪些

這篇文章主要介紹“javascript數(shù)組拍平方法有哪些”,在日常操作中,相信很多人在javascript數(shù)組拍平方法有哪些問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”javascript數(shù)組拍平方法有哪些”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

沁源ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書(shū)合作)期待與您的合作!

下面筆者將為大家演示一下,將一個(gè)多維數(shù)組拍平成一個(gè)一維數(shù)組的兩種方法。

首先是第一種方法,遞歸處理,代碼如下:

var arr = [1, 2, 3, [3, 3, 3, [5, 4, 5, 6, 6, 7, 8]],
 [333, 4444]
];
function product() {
 // 1、創(chuàng)建一個(gè)空數(shù)組,
 var newarr = [];
 ///2、并且返回一個(gè)函數(shù),函數(shù)參數(shù)為要拍平的數(shù)組
 return function flatten(arr) {
  // 3、循環(huán)數(shù)組,判斷每一項(xiàng),不為輸?shù)脑拰⑵淙雗ewarr
  // 若為數(shù)組,遞歸調(diào)用 faltten,并將結(jié)果與newarr合并
  for (var t of arr) {
   if (!Array.isArray(t)) {
    newarr.push(t);
   } else {
    newarr.concat(flatten(t))
   }
  }
  return newarr
 }
}
var flatten = product();
console.log(flatten(arr))

執(zhí)行結(jié)果為:

javascript數(shù)組拍平方法有哪些

上面這這種方法比較中規(guī)中矩,代碼詳解見(jiàn)注釋?zhuān)旅孢@種方法運(yùn)用到了javascript語(yǔ)言的一些新特性,代碼如下:

var arr = [1, 2, 3, [3, 3, 3, [5, 4, 5, 6, 6, 7, 8]],
 [333, 4444]
];
function flatten(arr){
 return arr.reduce(function(pre,cur){
  if(!Array.isArray(cur)){
   return [...pre,cur];
  }else{
   return [...pre,...flatten(cur)]
  }
 },[])
}
console.log(flatten(arr))

上面代碼中用了ES6的一個(gè)新特性擴(kuò)展云算法 “...”,“[...abc,...fff]”其作用相當(dāng)于abc.concat(fff),這種用法更加直觀明了,還有就是運(yùn)用了reduce方法。reduce是javascript語(yǔ)言中數(shù)組的一個(gè)方法。

數(shù)組調(diào)用recduce方法時(shí),可以傳遞兩個(gè)參數(shù),第一個(gè)參數(shù)為回調(diào)函數(shù),第二個(gè)參數(shù)為一個(gè)初始值?;卣{(diào)函數(shù)中需要傳遞兩個(gè)參數(shù),第一個(gè)參數(shù)為每次執(zhí)行函數(shù)的返回值,第二個(gè)參數(shù)為當(dāng)前索引對(duì)應(yīng)數(shù)組的值。reduce的第二個(gè)參數(shù)是可以省略的,省略的話,回調(diào)函數(shù)第一次調(diào)用的參數(shù)為數(shù)組的第一項(xiàng)和第二項(xiàng)的值,如果沒(méi)有省略,回調(diào)函數(shù)的第一個(gè)參數(shù)就是這個(gè)初始值。上面的例子,reduce的第二個(gè)參數(shù)設(shè)置了一個(gè)空數(shù)組。

到此,關(guān)于“javascript數(shù)組拍平方法有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

網(wǎng)頁(yè)名稱:javascript數(shù)組拍平方法有哪些
標(biāo)題URL:http://muchs.cn/article16/ghejdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈網(wǎng)站建設(shè)、域名注冊(cè)、動(dòng)態(tài)網(wǎng)站、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站