欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS一維數(shù)組轉(zhuǎn)化為三維數(shù)組方法

 更新時間:2022年01月26日 17:50:58   投稿:hqx  
這篇文章主要給大家分享了JS一維數(shù)組轉(zhuǎn)化為三維數(shù)組的方法,下面文章圍繞JS數(shù)組轉(zhuǎn)換的相關(guān)資料展開內(nèi)容,對大家的學(xué)習(xí)有一定的參考價值,需要的小伙伴可以參考一下

有人提問想要將一維數(shù)組轉(zhuǎn)化為三位數(shù)組的需求,下面就給提問的的小伙伴安排上

下面是后端同學(xué)返給我們的一維數(shù)組數(shù)據(jù)格式:

?? ?[{
? ? ? '品牌': 'xiaomi', '機型': '10', '配置': '512'
? ? },
? ? {
? ? ? '品牌': 'xiaomi', '機型': '10', '配置': '128'
? ? },
? ? {
? ? ? '品牌': 'xiaomi', '機型': '11', '配置': '128'
? ? },
? ? {
? ? ? '品牌': 'xiaomi', '機型': '11', '配置': '64'
? ? },
? ? {
? ? ? '品牌': 'iPhone', '機型': '10', '配置': '128'
? ? },
? ? {
? ? ? '品牌': 'iPhone', '機型': '11', '配置': '64'
? ? },
? ? {
? ? ? '品牌': 'iPhone', '機型': '12', '配置': '64'
? ? },
? ? {
? ? ? '品牌': 'honor', '機型': '4', '配置': '256'
? ? },
? ? {
? ? ? '品牌': 'honor', '機型': '5', '配置': '128'
? ? },
? ? {
? ? ? '品牌': 'honor', '機型': '6', '配置': '128'
? ? }];

下面是我們想要轉(zhuǎn)化的數(shù)據(jù)格式(轉(zhuǎn)化成三維數(shù)組 第一層級為品牌、第二層級為型號、第三層級為配置)

 

 ? [
? ? ? {
? ? ? ? "value": "xiaomi",
? ? ? ? "label": "xiaomi",
? ? ? ? "children": [
? ? ? ? ? {
? ? ? ? ? ? "value": "10",
? ? ? ? ? ? "label": "10",
? ? ? ? ? ? "children": [
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? "value": "512",
? ? ? ? ? ? ? ? "label": "512"
? ? ? ? ? ? ? },
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? "value": "128",
? ? ? ? ? ? ? ? "label": "128"
? ? ? ? ? ? ? }
? ? ? ? ? ? ]
? ? ? ? ? },
? ? ? ? ? {
? ? ? ? ? ? "value": "11",
? ? ? ? ? ? "label": "11",
? ? ? ? ? ? "children": [
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? "value": "128",
? ? ? ? ? ? ? ? "label": "128"
? ? ? ? ? ? ? },
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? "value": "64",
? ? ? ? ? ? ? ? "label": "64"
? ? ? ? ? ? ? }
? ? ? ? ? ? ]
? ? ? ? ? }
? ? ? ? ]
? ? ? },
? ? ? {
? ? ? ? "value": "iPhone",
? ? ? ? "label": "iPhone",
? ? ? ? "children": [
? ? ? ? ? {
? ? ? ? ? ? "value": "10",
? ? ? ? ? ? "label": "10",
? ? ? ? ? ? "children": [
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? "value": "128",
? ? ? ? ? ? ? ? "label": "128"
? ? ? ? ? ? ? }
? ? ? ? ? ? ]
? ? ? ? ? },
? ? ? ? ? {
? ? ? ? ? ? "value": "11",
? ? ? ? ? ? "label": "11",
? ? ? ? ? ? "children": [
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? "value": "64",
? ? ? ? ? ? ? ? "label": "64"
? ? ? ? ? ? ? }
? ? ? ? ? ? ]
? ? ? ? ? },
? ? ? ? ? {
? ? ? ? ? ? "value": "12",
? ? ? ? ? ? "label": "12",
? ? ? ? ? ? "children": [
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? "value": "64",
? ? ? ? ? ? ? ? "label": "64"
? ? ? ? ? ? ? }
? ? ? ? ? ? ]
? ? ? ? ? }
? ? ? ? ]
? ? ? },
? ? ? {
? ? ? ? "value": "honor",
? ? ? ? "label": "honor",
? ? ? ? "children": [
? ? ? ? ? {
? ? ? ? ? ? "value": "4",
? ? ? ? ? ? "label": "4",
? ? ? ? ? ? "children": [
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? "value": "256",
? ? ? ? ? ? ? ? "label": "256"
? ? ? ? ? ? ? }
? ? ? ? ? ? ]
? ? ? ? ? },
? ? ? ? ? {
? ? ? ? ? ? "value": "5",
? ? ? ? ? ? "label": "5",
? ? ? ? ? ? "children": [
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? "value": "128",
? ? ? ? ? ? ? ? "label": "128"
? ? ? ? ? ? ? }
? ? ? ? ? ? ]
? ? ? ? ? },
? ? ? ? ? {
? ? ? ? ? ? "value": "6",
? ? ? ? ? ? "label": "6",
? ? ? ? ? ? "children": [
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? "value": "128",
? ? ? ? ? ? ? ? "label": "128"
? ? ? ? ? ? ? }
? ? ? ? ? ? ]
? ? ? ? ? }
? ? ? ? ]
? ? ? }
? ? ]

首先我們定義一個arr變量接收我們的一維數(shù)組,然后將arr作為參數(shù)傳遞給我們轉(zhuǎn)化數(shù)組的函數(shù),函數(shù)返回的就是我們最終的三維數(shù)組了

下面就是我們的arrConversion源碼:

? ? arrConversion (arr) {
? ? ? let keys = Object.keys(arr[0])
? ? ? let level1 = keys[0]//獲取一級屬性名稱
? ? ? let level2 = keys[1]//獲取二級屬性名稱
? ? ? let level3 = keys[2]//獲取三級屬性名稱
? ? ? let list = Array.from(new Set(
? ? ? ? arr.map(item => {
? ? ? ? ? return item[level1]
? ? ? ? })))
? ? ? let subList = []
? ? ? list.forEach(res => {
? ? ? ? arr.forEach(ele => {
? ? ? ? ? if (ele[level1] === 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[level2]) !== -1) {
? ? ? ? ? ? ? ? subList[nameArr.indexOf(res)].children[nameArr2.indexOf(ele[level2])].children.push({
? ? ? ? ? ? ? ? ? value: ele[level3],
? ? ? ? ? ? ? ? ? label: ele[level3],
? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? subList[nameArr.indexOf(res)].children.push({
? ? ? ? ? ? ? ? ? value: ele[level2],
? ? ? ? ? ? ? ? ? label: ele[level2],
? ? ? ? ? ? ? ? ? children: [{
? ? ? ? ? ? ? ? ? ? value: ele[level3],
? ? ? ? ? ? ? ? ? ? label: ele[level3],
? ? ? ? ? ? ? ? ? }]
? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? }
? ? ? ? ? ? } else {
? ? ? ? ? ? ? subList.push({
? ? ? ? ? ? ? ? value: res,
? ? ? ? ? ? ? ? label: res,
? ? ? ? ? ? ? ? children: [{
? ? ? ? ? ? ? ? ? value: ele[level2],
? ? ? ? ? ? ? ? ? label: ele[level2],
? ? ? ? ? ? ? ? ? children: [{
? ? ? ? ? ? ? ? ? ? value: ele[level3],
? ? ? ? ? ? ? ? ? ? label: ele[level3],
? ? ? ? ? ? ? ? ? }]
? ? ? ? ? ? ? ? }]
? ? ? ? ? ? ? })
? ? ? ? ? ? }
? ? ? ? ? }
? ? ? ? })

? ? ? })
? ? ? return subList

? ? }

輸出結(jié)果正確:

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

相關(guān)文章

  • js實現(xiàn)div色塊碰撞

    js實現(xiàn)div色塊碰撞

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)div色塊碰撞,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • js當(dāng)月水電氣簡單計算器

    js當(dāng)月水電氣簡單計算器

    一個可以計算當(dāng)月水電氣多少錢的計算器 說明:輸入各項后,在頁面任意空白處點擊鼠標(biāo),頁面自動計算一次結(jié)果!,每項都必須填寫,填0也可以
    2008-04-04
  • js實現(xiàn)AI五子棋人機大戰(zhàn)

    js實現(xiàn)AI五子棋人機大戰(zhàn)

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)AI五子棋人機大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • javascript陷阱 一不小心你就中招了(字符運算)

    javascript陷阱 一不小心你就中招了(字符運算)

    看似簡單的加法運行,卻有很多問題,一定要注意字符與數(shù)字的運算,注意使用js的強制類型轉(zhuǎn)換,否則會出現(xiàn)很多問題。我們在編寫js的過程中,最好通過alert逐行測試
    2013-11-11
  • JavaScript中如何使用cookie實現(xiàn)記住密碼功能及cookie相關(guān)函數(shù)介紹

    JavaScript中如何使用cookie實現(xiàn)記住密碼功能及cookie相關(guān)函數(shù)介紹

    cookie是網(wǎng)站設(shè)計者放置在客戶端(瀏覽器)的小文本文件,cookie不僅能夠?qū)崿F(xiàn)保存密碼功能,還可以通過cookie保存最近瀏覽記錄增加用戶體驗。本文給大家介紹js使用cookie實現(xiàn)記住密碼功能及cookie相關(guān)函數(shù)講解,感興趣的朋友一起看看吧
    2016-11-11
  • 深入詳解JS函數(shù)的柯里化

    深入詳解JS函數(shù)的柯里化

    JavaScript作為一種弱類型語言,它的隱式轉(zhuǎn)換是非常靈活有趣的。當(dāng)我們沒有深入了解隱式轉(zhuǎn)換的時候可能會對一些運算的結(jié)果會感動困惑,比如4 + true = 5。當(dāng)然,如果對隱式轉(zhuǎn)換了解足夠深刻,能夠提高對js的使用能力。這里分享一下,函數(shù)在隱式轉(zhuǎn)換中的一些規(guī)則
    2021-06-06
  • Webpack常見使用配置小結(jié)

    Webpack常見使用配置小結(jié)

    本文主要介紹了Webpack常見使用配置小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • javascript實現(xiàn)簡單倒計時效果

    javascript實現(xiàn)簡單倒計時效果

    這篇文章主要為大家詳細(xì)介紹了javascript實現(xiàn)倒計時效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • JavaScript事件委托實現(xiàn)原理及優(yōu)點進(jìn)行

    JavaScript事件委托實現(xiàn)原理及優(yōu)點進(jìn)行

    這篇文章主要介紹了JavaScript事件委托實現(xiàn)原理及優(yōu)點進(jìn)行,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • 純JavaScript實現(xiàn)猜數(shù)字游戲

    純JavaScript實現(xiàn)猜數(shù)字游戲

    這篇文章主要為大家詳細(xì)介紹了純JavaScript實現(xiàn)猜數(shù)字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評論