日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

JS數組降維的實現Array.prototype.concat.apply([], arr)

瀏覽:221日期:2024-05-11 14:58:13

把多維數組(尤其是二維數組)轉化為一維數組是業務開發中的常用邏輯,最近跟著黃軼老師學習Vue2.6.1.1版本源碼時,看到源碼對二維數組降維的代碼,所以這里來寫一篇,記錄一下,加強印象

二維數組降為一維數組

循環降維

let children = [1, 2, 3, [4, 5, 6], 7, 8, [9, 10]];function simpleNormalizeChildren(children) { let reduce = []; for (let i = 0; i < children.length; i++) { if (Array.isArray(children[i])) { for (let j = 0; j < children[i].length; j++) { reduce.push(children[i][j]); } } else { reduce.push(children[i]); } } return reduce;}simpleNormalizeChildren(children) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

此方法思路簡單,利用雙重循環遍歷二維數組中的每個元素并放到新數組中。

concat降維

MDN上對于concat的介紹

“concat creates a new array consisting of the elements in the object on which it is called, followed in order by, for each argument, the elements of that argument (if the argument is an array) or the argument itself (if the argument is not an array).”

concat

如果concat方法的參數是一個元素,該元素會被直接插入到新數組中;如果參數是一個數組,該數組的各個元素將被插入到新數組中;將該特性應用到代碼中:

let children = [1, 2, 3, [4, 5, 6], 7, 8, [9, 10]];function simpleNormalizeChildren(children) { let reduce = []; for (let i = 0; i < children.length; i++) { reduce = reduce.concat(children[i]); } return reduce;}simpleNormalizeChildren(children) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

children 的元素如果是一個數組,作為concat方法的參數,數組中的每一個子元素會被獨立插入進新數組。利用concat方法,我們將雙重循環簡化為了單重循環。

apply和concat降維

MDN上對于apply方法的介紹

“The apply() method calls a function with a given this value and arguments provided as an array.”

apply

apply方法會調用一個函數,apply方法的第一個參數會作為被調用函數的this值,apply方法的第二個參數(一個數組,或類數組的對象)會作為被調用對象的arguments值,也就是說該數組的各個元素將會依次成為被調用函數的各個參數;將該特性應用到代碼中:

let children = [1, 2, 3, [4, 5, 6], 7, 8, [9, 10]];function simpleNormalizeChildren(children) { return Array.prototype.concat.apply([], children);}simpleNormalizeChildren(children) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

children作為apply方法的第二個參數,本身是一個數組,數組中的每一個元素(還是數組,即二維數組的第二維)會被作為參數依次傳入到concat中,效果等同于[].concat(1, 2, 3, [4, 5, 6], 7, 8, [9, 10])。利用apply方法,我們將單重循環優化為了一行代碼

Vue2.6.11版本源碼降維

let children = [1, 2, 3, [4, 5, 6], 7, 8, [9, 10]];// :any 可以去掉 這里是Vue通過Flow指定傳入的參數類型可以是任意類型function simpleNormalizeChildren(children: any) { for (let i = 0; i < children.length; i++) { if (Array.isArray(children[i])) { return Array.prototype.concat.apply([], children); } } return children;}simpleNormalizeChildren(children); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

多維數組降為一維數組

遞歸降維

遞歸函數就是在函數體內調用自己;

遞歸函數的使用要注意函數終止條件避免死循環;

// 多維數組let children = [1, [2,3], [4, [5, 6, [7, 8]]], [9, 10]];function simpleNormalizeChildren(children) { for (let i = 0; i < children.length; i++) { if (Array.isArray(children[i])) { children = Array.prototype.concat.apply([], children); for(let j =0; j<children.length; j++) { simpleNormalizeChildren(children) } } } return children;}simpleNormalizeChildren(children); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

到此這篇關于JS數組降維的實現Array.prototype.concat.apply([], arr)的文章就介紹到這了,更多相關JS數組降維內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: JavaScript
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久国产欧美| 国产一区二区三区不卡av| 国产在线一区不卡| 国产精品一区三区在线观看| 日韩毛片一区| 日韩精品免费观看视频| 日韩一区二区三区精品| 日本久久二区| 视频一区免费在线观看| 黄色日韩精品| 免费日韩视频| 最新亚洲国产| 国产欧美综合一区二区三区| 国产精品一区二区免费福利视频| 欧美视频久久| 久久99精品久久久久久园产越南| 欧美激情在线精品一区二区三区| 精品久久影院| 久久国产日韩| 99亚洲视频| 视频一区二区三区在线| 亚洲精品国模| 欧美亚洲色图校园春色| 日本亚洲最大的色成网站www| 色8久久久久| 911亚洲精品| 久久不卡日韩美女| 久久久久九九精品影院| 国产精品久久久久蜜臀| 欧洲一级精品| 最新亚洲激情| 日韩精品一区二区三区中文字幕| 国产亚洲人成a在线v网站| 国产精品白丝一区二区三区| 久久av影视| 欧美成a人免费观看久久| 激情综合网五月| 视频一区二区欧美| 蜜桃一区二区三区在线观看| 日韩高清三区| 国产一区三区在线播放| 国户精品久久久久久久久久久不卡 | 日韩一区精品字幕| 日本一不卡视频| 国产精品白丝久久av网站| 欧美香蕉视频| 玖玖精品视频| 欧美亚洲福利| 在线天堂资源www在线污| 亚洲高清不卡| 日韩精品1区2区3区| 精品一区视频| 国产专区一区| 日韩成人一级| 麻豆理论在线观看| 免费在线成人网| 精品久久不卡| 视频在线观看91| 精品美女视频| 免费观看久久久4p| 高潮久久久久久久久久久久久久| 狠狠久久婷婷| 国产精品亚洲欧美一级在线| 免费在线小视频| 午夜久久av| 桃色一区二区| 麻豆精品99| 伊人久久成人| 麻豆精品久久| 亚洲欧美高清| 麻豆精品在线播放| 香蕉久久夜色精品国产| 精品香蕉视频| 亚洲色图国产| 亚洲不卡系列| 国产日韩在线观看视频| 久久久久久黄| 日本午夜精品久久久久| 亚洲国产成人二区| 日韩一区二区三区高清在线观看 | 国产亚洲一区| 亚洲综合不卡| 日韩欧美中文| 国产日韩一区二区三区在线| 亚洲免费观看| 蜜臀国产一区| 国产欧美日韩精品一区二区免费| 欧美不卡视频| 国产成人精品三级高清久久91| 蜜臀久久99精品久久久久宅男 | 另类小说一区二区三区| 国产日韩综合| 麻豆视频在线观看免费网站黄| 日韩亚洲精品在线观看| 一区视频在线| 日本在线高清| 麻豆91精品视频| 亚洲精品免费观看| 欧美成人精品| 日韩精品中文字幕第1页| 国产日韩欧美三区| 亚洲性视频在线| 欧美日韩激情在线一区二区三区| 精品国产精品国产偷麻豆| 亚洲欧洲免费| 国产精品丝袜xxxxxxx| 亚洲成av在线| 六月婷婷综合| 岛国精品一区| 乱一区二区av| 你懂的国产精品永久在线| 日韩 欧美一区二区三区| 首页亚洲欧美制服丝腿| 米奇777超碰欧美日韩亚洲| 亚洲三级欧美| 国产一区二区三区不卡视频网站 | 久久精品一区二区三区中文字幕| 亚洲91网站| 亚洲一区亚洲| 香蕉国产精品| 久久一级电影| 日韩精品一区二区三区免费观看| 国产精品高颜值在线观看| 嫩草伊人久久精品少妇av杨幂| 国产麻豆一区二区三区精品视频| 日本视频一区二区| 欧美一区在线观看视频| 日韩黄色免费网站| 91免费精品国偷自产在线在线| 日本一区二区三区中文字幕| 亚洲精品高潮| 日韩福利视频一区| 日本综合视频| 日韩av一区二区三区四区| 亚洲精品免费观看| 色婷婷成人网| 久久精品av麻豆的观看方式| 欧美一级网址| 国产福利一区二区精品秒拍| 美女国产精品久久久| 日韩成人一级| 欧美一区=区三区| 亚洲人成高清| 日韩国产欧美在线视频| 日本亚洲三级在线| 欧美一区影院| 国产欧美激情| 石原莉奈在线亚洲二区| 中文字幕亚洲精品乱码| 久久一二三区| 蜜桃久久久久久| 国产精品婷婷| 免费欧美在线视频| 欧美啪啪一区| 国产欧美日韩精品高清二区综合区 | 日本va欧美va瓶| 欧美专区18| 国产精品毛片一区二区三区| 五月精品视频| 视频一区欧美精品| 黄色国产精品| 石原莉奈一区二区三区在线观看 | 国产在视频一区二区三区吞精| 成人在线视频免费看| 99久久99久久精品国产片果冰| 久久久久久美女精品| 国产精品88久久久久久| 国产亚洲网站| 日韩专区视频网站| 欧美国产日本| 美女视频黄免费的久久| 免费视频一区二区三区在线观看| 精品中文字幕一区二区三区四区| 国产一区一一区高清不卡| 亚洲午夜电影| 亚洲性视频在线| 国产精品久久久免费| 成人一二三区| 黄色网一区二区| 亚洲激情不卡| 日韩**一区毛片| 精品免费视频| 99精品小视频| 青青草国产成人99久久| 精品一区二区三区在线观看视频| 精品久久中文| 激情欧美一区| 男女精品网站| 国精品产品一区| 午夜久久免费观看| 日韩二区三区在线观看| 激情综合五月| 欧美日韩日本国产亚洲在线| 亚洲精品韩国| 精品资源在线| 欧美不卡在线| 午夜电影一区| 色爱综合网欧美| 亚洲精品国产偷自在线观看| 中文字幕免费一区二区|