最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS一維數(shù)組轉(zhuǎn)化為三維數(shù)組的實(shí)現(xiàn)示例

 更新時(shí)間:2021年12月24日 09:58:37   作者:幾何心涼  
很多時(shí)候,跟后端接口開發(fā)對接時(shí),因?yàn)樾枨蟮年P(guān)系,需要前端地區(qū)數(shù)據(jù)跟后端的數(shù)據(jù)要一一對應(yīng),有時(shí)候需要的是多維數(shù)據(jù),這篇文章主要介紹了JS一維數(shù)組轉(zhuǎn)化為三維數(shù)組的實(shí)現(xiàn)示例,感興趣的可以了解一下

今天在CSDN上問答區(qū)看到一個提問的小伙伴,是想要將一維數(shù)組轉(zhuǎn)化為三位數(shù)組的需求,正好不是很忙,樂于助人的我立馬給這位同學(xué)安排上,當(dāng)然也沒有顧及那么多去看資料什么的,就直接按照自己的思路走了!下方有源碼

在這里插入圖片描述

上面是他的數(shù)據(jù)格式,下面呢是要轉(zhuǎn)化的數(shù)據(jù)格式

在這里插入圖片描述

話不多說直接上代碼

 let arr = [{
      'peovince': 'a', 'city': 'b', 'area': 'c'
    },
    {
      'peovince': 'a', 'city': 'b', 'area': 'd'
    },
    {
      'peovince': 'a', 'city': 'e', 'area': 'f'
    },
    {
      'peovince': 'a', 'city': 'e', 'area': 'g'
    },
    {
      'peovince': 'o', 'city': 'p', 'area': 'q'
    },
    {
      'peovince': 'o', 'city': 'p', 'area': 'r'
    },
    {
      'peovince': 'o', 'city': 's', 'area': 't'
    },
    {
      'peovince': 'o', 'city': 's', 'area': 'v'
    }];

開始轉(zhuǎn)化

let list = Array.from(new Set(
      arr.map(item => {
        return item['peovince']
      })))
    let subList = []
    list.forEach(res => {
      arr.forEach(ele => {
        if (ele['peovince'] === res) {
          let nameArr = subList.map(item => item.value)
          if (nameArr.indexOf(res) !== -1) {
            let nameArr2 = subList[nameArr.indexOf(res)].children.map(item => item.value)
            if (nameArr2.indexOf(ele['city']) !== -1) {
              subList[nameArr.indexOf(res)].children[nameArr2.indexOf(ele['city'])].children.push({
                value: ele['area'],
                label: ele['area'],
              })
            } else {
              subList[nameArr.indexOf(res)].children.push({
                value: ele['city'],
                label: ele['city'],
                children: [{
                  value: ele['area'],
                  label: ele['area'],
                }]
              })
            }
          } else {
            subList.push({
              value: res,
              label: res,
              children: [{
                value: ele['city'],
                label: ele['city'],
                children: [{
                  value: ele['area'],
                  label: ele['area'],
                }]
              }]
            })
          }
        }
      })

    })
    console.log(subList)

最后打印的subList就是想要的格式了,讓我們看一下打印

ps:JavaScript一維數(shù)組轉(zhuǎn)二維數(shù)組

第一種情況:數(shù)組里面是字符串的時(shí)候

  let array = [1, 2, 3, 4, 5, 6, 7, 8];
  len len = array.length;
  let n = 4; //假設(shè)每行顯示4個
  let lineNum = len % n === 0 ? len / n : Math.floor( (len / n) + 1 );
  let res = [];
  for (let i = 0; i < lineNum; i++) {
    // slice() 方法返回一個從開始到結(jié)束(不包括結(jié)束)選擇的數(shù)組的一部分淺拷貝到一個新數(shù)組對象。且原始數(shù)組不會被修改。
    let temp = array.slice(i*n, i*n+n);
    res.push(temp);
  }
  console.log(res);

第二種情況:數(shù)組里面是對象的時(shí)候

當(dāng)數(shù)組元素為對象的時(shí)候,就不能使用slice方法進(jìn)行截取了,因?yàn)閟lice屬于淺拷貝,導(dǎo)致的問題就是你修改了新生成的數(shù)組對象值,會影響原始數(shù)組中對象的值。
這里就介紹一種通過JSON.stringify和JSON.parse方法。

  let objArray = [{a: 1}, {b: 2}, {c: 3}, {d: 4}, {e: 5}, {f: 6}, {g: 7}];
  let len = objArray.length;
  let n = 4; //假設(shè)每行顯示4個
  let lineNum = len % 4 === 0 ? len / 4 : Math.floor( (len / 4) + 1 );
  let res = [];
  for (let i = 0; i < lineNum; i++) {
    let temp = objArray.slice(i*n, i*n+n);
    res.push(JSON.parse(JSON.stringify(temp)));
  }
  console.log(res);


到此這篇關(guān)于JS一維數(shù)組轉(zhuǎn)化為三維數(shù)組的文章就介紹到這了,更多相關(guān)JS一維數(shù)組轉(zhuǎn)化為三維數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript中常見的Polyfill示例詳解

    JavaScript中常見的Polyfill示例詳解

    這篇文章主要介紹了JavaScript中常見Polyfill的相關(guān)資料,Polyfill是一種代碼,用于在舊版瀏覽器中實(shí)現(xiàn)不支持的現(xiàn)代JavaScript功能,以確??鐬g覽器兼容性和代碼統(tǒng)一性,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • 基于JS模仿windows文件按名稱排序效果

    基于JS模仿windows文件按名稱排序效果

    這篇文章主要介紹了基于JS實(shí)現(xiàn)模仿windows文件按名稱排序的相關(guān)資料,主要是對數(shù)字的處理操作,非常不錯,具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • JS實(shí)現(xiàn)數(shù)組內(nèi)值累加常見的3個方法

    JS實(shí)現(xiàn)數(shù)組內(nèi)值累加常見的3個方法

    這篇文章主要給大家介紹了關(guān)于JS實(shí)現(xiàn)數(shù)組內(nèi)值累加常見的3個方法,文中通過實(shí)例代碼將3個方法介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用js具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • js取滾動條的尺寸的函數(shù)代碼

    js取滾動條的尺寸的函數(shù)代碼

    js取滾動條的尺寸的函數(shù)代碼,需要的朋友可以參考下。
    2011-11-11
  • JS操作Cookies包括(讀取添加與刪除)

    JS操作Cookies包括(讀取添加與刪除)

    一直都是簡單去js實(shí)現(xiàn)cookie的一些操作,今天把js對cookie操作系統(tǒng)的整理了一遍,包括:js讀取cookie,js添加cookie,js刪除cookie
    2012-12-12
  • 微信小程序使用npm包的方法步驟

    微信小程序使用npm包的方法步驟

    這篇文章主要介紹了微信小程序使用npm包的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 詳解js對象中屬性的兩種類型之?dāng)?shù)據(jù)屬性和訪問器屬性

    詳解js對象中屬性的兩種類型之?dāng)?shù)據(jù)屬性和訪問器屬性

    在理解vue底層響應(yīng)式原理時(shí),了解到,原來對象中的屬性,不單單從表面看起來那么簡單是key:value形式,而是還有隱藏的內(nèi)部特性,其中對象內(nèi)的屬性分為兩種類型的屬性:數(shù)據(jù)屬性和訪問器屬性,本文將給大家詳細(xì)介紹一下數(shù)據(jù)屬性和訪問器屬性,需要的朋友可以參考下
    2023-05-05
  • JavaScript中不可忽略的Symbol的盤點(diǎn)

    JavaScript中不可忽略的Symbol的盤點(diǎn)

    Symbol類型的出現(xiàn),為每個屬性賦予了獨(dú)一無二的標(biāo)識符,無論項(xiàng)目多么復(fù)雜,Symbol都能確保屬性鍵的絕對唯一性,下面我們就來看看JavaScript中那些不可忽略的Symbol吧
    2024-12-12
  • js數(shù)組方法reduce經(jīng)典用法代碼分享

    js數(shù)組方法reduce經(jīng)典用法代碼分享

    本文給大家整理了很多關(guān)于js數(shù)組方法reduce的經(jīng)典代碼片段,能夠讓大家更好的理解reduce的實(shí)例用法,一起學(xué)習(xí)下吧。
    2018-01-01
  • 微信小程序?qū)崿F(xiàn)單個或多個倒計(jì)時(shí)功能

    微信小程序?qū)崿F(xiàn)單個或多個倒計(jì)時(shí)功能

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)單個或多個倒計(jì)時(shí)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11

最新評論

曲水县| 宁津县| 大港区| 吴江市| 黄石市| 连南| 东乡族自治县| 永兴县| 金沙县| 斗六市| 石楼县| 太湖县| 亳州市| 云和县| 安义县| 土默特左旗| 永寿县| 晴隆县| 安陆市| 郴州市| 漳平市| 赤峰市| 比如县| 东乡县| 文山县| 泌阳县| 七台河市| 承德县| 从江县| 昔阳县| 神池县| 湖南省| 龙海市| 宜兰市| 兰考县| 麻阳| 庆安县| 沂源县| 阳山县| 民丰县| 张家港市|