国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

js嵌套的數(shù)組扁平化:將多維數(shù)組變成一維數(shù)組以及push()與concat

2024-05-06 15:43:04
字體:
供稿:網(wǎng)友

數(shù)組的扁平化:將多維數(shù)組變成一維數(shù)組

對于一個(gè)像這樣的嵌套數(shù)組:a=[1,[2,[3,4]],5,6]我們想要把它變成一個(gè)一維數(shù)組,有下面幾種方法:

方法一:遞歸一

function parseArr(arr,res){  var i=0;  for(i=0;i<arr.length;i++){    if(arr[i] instanceof Array){      parseArr(arr[i],res);    }else{      res.push(arr[i]);    }  }}var a=[1,[2,[3,4]],5,6];var res=[];parseArr(a,res);

遞歸二(推薦)

  var arr = ['mu','zi',['dig',['big','love']]]  function flatten(arr){     var res = [];     for(var i=0;i<arr.length;i++){      if(Array.isArray(arr[i])){        res = res.concat(flatten(arr[i]));      }else{        res.push(arr[i]);      }     }     return res;   }  console.log(flatten(arr))//["mu", "zi", "dig", "big", "love"]

對上面的方法進(jìn)行解析:

1.語法: Array.isArray(object);參數(shù):object必需。要測試的對象。

返回值

如果 object 是數(shù)組,則為 true;否則為 false。 如果 object 參數(shù)不是對象,則返回 false。

2.push()與concat()的區(qū)別

1,push()是在原數(shù)組的基礎(chǔ)上修改的,執(zhí)行push()方法后原數(shù)組的值也會(huì)變,在原數(shù)組后面添加值;若操作concat()的是一個(gè)數(shù)組先把原數(shù)組的每個(gè)值復(fù)制到一個(gè)新/另的數(shù)組,然后在新/另數(shù)組上進(jìn)行操作,所以不會(huì)改變原數(shù)組的值。 2,如果參數(shù)不是數(shù)組,不管參數(shù)個(gè)數(shù)有多少個(gè),push()和concat()都會(huì)直接把參數(shù)添加到數(shù)組后;如果參數(shù)是一個(gè)數(shù)組,push()就會(huì)直接把數(shù)組添加到原數(shù)組后,而concat()會(huì)把數(shù)組里的值取出來添加到原數(shù)組后。

方法二: 使用toString先變成一個(gè)字符串再使用split變成一個(gè)字符串?dāng)?shù)組(數(shù)組中的每個(gè)元素是一個(gè)字符串),最后使用map方法將數(shù)組中的每個(gè)元素返回為非字符串。

//arr數(shù)組中的元素不能為字符串只能為數(shù)組var newArr=arr.toString().split(',').map(function(ele){  return +ele;});console.log(newArr)alert(typeof arr[0]); //number

方式三:使用toString()和split(',')方法

  toString()

     如果數(shù)組的元素都是數(shù)字,那么我們可以考慮使用 toString 方法,因?yàn)椋?br />     toString會(huì)將數(shù)組中的數(shù)以逗號(hào)形式結(jié)合起來。

toString()之后再split(',')轉(zhuǎn)成數(shù)組,并將其轉(zhuǎn)換回?cái)?shù)字?jǐn)?shù)組:

  var arr = [1, [2, [3, 4],[5,[6],[7,8]]]];  var arrStr = arr.toString();  console.log(arrStr);//1,2,3,4,5,6,7,8  var strArr = arrStr.split(',');  console.log(strArr)//["1", "2", "3", "4", "5", "6", "7", "8"]

方式二和方式三  的場景只適用于數(shù)組內(nèi)全部是數(shù)字的情況,因?yàn)橹虚g是全部轉(zhuǎn)換為字符串了。

方法四: 使用reduce和concat方法

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 昭苏县| 黎城县| 神池县| 浮山县| 凤庆县| 塔城市| 翁牛特旗| 息烽县| 桦南县| 黑河市| 偃师市| 萍乡市| 蚌埠市| 辛集市| 东城区| 广安市| 邵阳县| 固阳县| 驻马店市| 花莲市| 开平市| 凌源市| 新乡市| 郁南县| 普格县| 尼玛县| 霍城县| 湖南省| 临邑县| 临泉县| 沁阳市| 西乌| 奉化市| 台东市| 三河市| 苍梧县| 苍梧县| 兴城市| 托克逊县| 伊吾县| 石阡县|