日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
JS手寫面試題:如何實(shí)現(xiàn)數(shù)組扁平化?
在了解具體實(shí)現(xiàn)方法之前?就是將多層嵌套的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為一個(gè)只包含基本類型值(數(shù)值、字符串、布爾值)或者對(duì)象類型值(沒有子屬性)的一維結(jié)構(gòu),首先定義一個(gè)函數(shù)`flatten(arr)`,
  • 本文目錄導(dǎo)讀:
  • 1、什么是數(shù)組扁平化?
  • 2、方法一:遞歸法
  • 3、方法二:迭代法


茫崖網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來(lái)到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。

在 JavaScript 中,數(shù)組往往是我們經(jīng)常使用的數(shù)據(jù)結(jié)構(gòu)之一。但有時(shí)候我們需要將多層嵌套的數(shù)組轉(zhuǎn)換成一維數(shù)組,這就是所謂的“扁平化”。今天我來(lái)和大家分享一下如何用純手寫代碼實(shí)現(xiàn) JavaScript 數(shù)組扁平化。

什么是數(shù)組扁平化?

在了解具體實(shí)現(xiàn)方法之前,讓我們先明確一下什么是“數(shù)組扁平化”。

簡(jiǎn)單來(lái)說,“扁平化”就是將多層嵌套的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為一個(gè)只包含基本類型值(數(shù)值、字符串、布爾值)或者對(duì)象類型值(沒有子屬性)的一維結(jié)構(gòu)。比如:

```

[1, [2, 3], [[4], 5]]

通過“扁平化”,可以得到:

[1, 2, 3, 4, 5]

方法一:遞歸法

第一個(gè)方法是最常見也最容易想到的——遞歸法。

首先定義一個(gè)函數(shù)`flatten(arr)`,它接受一個(gè)參數(shù) arr,并返回處理后的結(jié)果。如果傳入?yún)?shù)不為 Array 類型,則直接返回該參數(shù);否則遍歷該數(shù)組并檢查每個(gè)元素是否為 Array 類型。若不是,則將其添加至結(jié)果集中;若是,則遞歸調(diào)用`flatten()`函數(shù),并將返回值與結(jié)果集合并。最后返回結(jié)果集即可。

function flatten(arr) {

var result = [];

for (var i = 0, len = arr.length; i < len; i++) {

if (Array.isArray(arr[i])) {

result = result.concat(flatten(arr[i]));

} else {

result.push(arr[i]);

}

}

return result;

}

方法二:迭代法

第二個(gè)方法是使用迭代來(lái)實(shí)現(xiàn)數(shù)組扁平化。

首先定義一個(gè)函數(shù)`flatten2(arr)`,它接受一個(gè)參數(shù) arr,并返回處理后的結(jié)果。然后我們需要一個(gè) while 循環(huán)來(lái)不斷遍歷數(shù)組,直到該數(shù)組中沒有嵌套的子數(shù)組為止。在循環(huán)內(nèi)部,我們判斷當(dāng)前元素是否為 Array 類型,如果是就展開這個(gè)子數(shù)組(通過 concat 方法),否則就添加至結(jié)果集中。

function flatten2(arr) {

var stack = [...arr];

while(stack.length !==0){

const val=stack.pop();

if(Array.isArray(val)){

stack.push(...val);

}else{

res.unshift(val)

}

}

return res


今天我和大家分享了兩種純手寫代碼實(shí)現(xiàn) JavaScript 數(shù)組扁平化的方法——遞歸法和迭代法。無(wú)論哪一種方式都可以達(dá)到同樣的效果,在具體應(yīng)用場(chǎng)景下選擇相應(yīng)的方法即可。

最后,我想說的是:在實(shí)際開發(fā)中,我們需要注意代碼的可讀性、健壯性以及效率等問題。寫好 JavaScript 代碼不僅能提高開發(fā)效率,還可以讓我們更好地理解和掌握這門語(yǔ)言。


本文標(biāo)題:JS手寫面試題:如何實(shí)現(xiàn)數(shù)組扁平化?
轉(zhuǎn)載源于:http://www.dlmjj.cn/article/dhedops.html