国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JS數(shù)據(jù)的扁平化處理

這篇具有很好參考價(jià)值的文章主要介紹了JS數(shù)據(jù)的扁平化處理。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1.純數(shù)組扁平化

// 給定的數(shù)組
const arr = [1, [2, [3, 4, [5], 6], 7], 8, [9, [10, 11], 1], 2];

// 定義一個(gè)函數(shù),用于將嵌套數(shù)組展平為一維數(shù)組
function flattenArray(obj = [], res = []) {
    // 如果輸入為空數(shù)組,直接返回空數(shù)組
    if (!obj) return;

    // 遍歷數(shù)組中的每個(gè)元素
    if (Array.isArray(obj)) {
        obj.forEach((item) => {
            // 如果元素是數(shù)組,則遞歸調(diào)用 flattenArray
            if (Array.isArray(item)) {
                flattenArray(item, res);
            } else {
                // 如果元素不是數(shù)組,將其添加到結(jié)果數(shù)組中
                res.push(item);
            }
        });
    }

    // 返回展平后的結(jié)果數(shù)組
    return res;
}

// 調(diào)用函數(shù),將給定的嵌套數(shù)組展平為一維數(shù)組
const flattenedArray = flattenArray(arr);

// 打印展平后的數(shù)組
console.log(flattenedArray);

2.純對象扁平化

// 給定的嵌套對象
const obj = { a: { b: { c: 1, d: 2 }, e: 3 }, f: { g: 2 } };

// 定義一個(gè)函數(shù),用于將嵌套對象的鍵展平為字符串
function flattenKeys(obj, preKey = "", res = {}) {
  // 使用 Object.entries 遍歷對象的鍵值對數(shù)組
  Object.entries(obj).forEach(([key, value]) => {
    // 檢查值是否為對象且非空
    if (value && typeof value === "object") {
      // 如果值是對象且非空,遞歸調(diào)用 flattenKeys,并傳遞更新的鍵前綴
      flattenKeys(value, preKey + key + ".", res);
    } else {
      // 如果值不是對象,將鍵和值添加到結(jié)果對象中
      res[preKey + key] = value;
    }
  });

  // 返回展平后的結(jié)果對象
  return res;
}

// 調(diào)用函數(shù),將給定的嵌套對象的鍵展平為字符串
const flattenedKeys = flattenKeys(obj);

// 打印展平后的鍵值對對象
console.log(flattenedKeys);

3.復(fù)雜類型扁平化

// 給定的對象數(shù)組
const obj1 = [1, 2, 3, { a: 1, b: { c: 2, d: { e: 3 } } }, [4, [5, 6, [7]]]];

// 給定的嵌套對象
const obj2 = { a: [1, [2, [3]], b: { c: { d: 1 } }, e: 2, f: 3 };

// 給定的對象數(shù)組
const obj3 = [{ a: 1, b: [2, { c: 3 }] }];

// 定義一個(gè)函數(shù),用于將嵌套數(shù)組和對象的鍵展平為字符串
function flatten(obj = {}, preKey = "", res = {}) {
  // 空值判斷,如果 obj 是空,直接返回
  if (!obj) return;

  // 獲取 obj 對象的所有 [key, value] 數(shù)組并且遍歷,forEach 的箭頭函數(shù)中使用了解構(gòu)
  Object.entries(obj).forEach(([key, value]) => {
    if (Array.isArray(value)) {
      // 如果 value 是數(shù)組,那么 key 就是數(shù)組的 index,value 就是對應(yīng)的 value
      // obj 是數(shù)組的話就用 [] 引起來
      // 因?yàn)?value 是數(shù)組,數(shù)組后面是直接跟元素的,不需要 . 號
      let temp = Array.isArray(obj) ? `${preKey}[${key}]` : `${preKey}${key}`;
      flatten(value, temp, res);
    } else if (typeof value === 'object') {
      // 因?yàn)?value 是對象類型,所以在末尾需要加 . 號
      let temp = Array.isArray(obj) ? `${preKey}[${key}].` : `${preKey}${key}.`;
      flatten(value, temp, res);
    } else {
      // 如果 value 既不是數(shù)組也不是對象,將鍵和值添加到結(jié)果對象中
      let temp = Array.isArray(obj) ? `${preKey}[${key}]` : `${preKey}${key}`;
      res[temp] = value;
    }
  });

  // 返回展平后的結(jié)果對象
  return res;
}

// 調(diào)用函數(shù),將給定的嵌套數(shù)組和對象的鍵展平為字符串
const flattenedObj1 = flatten(obj1);
const flattenedObj2 = flatten(obj2);
const flattenedObj3 = flatten(obj3);

// 打印展平后的鍵值對對象
console.log(flattenedObj1);
console.log(flattenedObj2);
console.log(flattenedObj3);

文章來源地址http://www.zghlxwxcb.cn/news/detail-801601.html

到了這里,關(guān)于JS數(shù)據(jù)的扁平化處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 深度學(xué)習(xí)中Numpy的一些注意點(diǎn)(多維數(shù)組;數(shù)據(jù)類型轉(zhuǎn)換、數(shù)組扁平化、np.where()、np.argmax()、圖像拼接、生成同shape的圖片)

    深度學(xué)習(xí)中Numpy的一些注意點(diǎn)(多維數(shù)組;數(shù)據(jù)類型轉(zhuǎn)換、數(shù)組扁平化、np.where()、np.argmax()、圖像拼接、生成同shape的圖片)

    a.shape=(3,2);既數(shù)組h=3,w=2 a.shape=(2,3,2);這里第一個(gè)2表示axis=0維度上的,三維數(shù)組中3,2)數(shù)組的個(gè)數(shù),這里表示兩個(gè)(3,2)數(shù)組。 這里axis=0指代哪里是很重要的知識點(diǎn)。深度學(xué)習(xí)中經(jīng)常壓縮一個(gè)維度,axis=0。 numpy.squeeze()函數(shù)。 語法:numpy.squeeze(a,axis = None);作用是將shape維度為

    2024年01月18日
    瀏覽(43)
  • 5個(gè)常見的前端手寫功能:淺拷貝與深拷貝、函數(shù)柯里化、數(shù)組扁平化、數(shù)組去重、手寫類型判斷函數(shù)

    5個(gè)常見的前端手寫功能:淺拷貝與深拷貝、函數(shù)柯里化、數(shù)組扁平化、數(shù)組去重、手寫類型判斷函數(shù)

    淺拷貝 淺拷貝是創(chuàng)建一個(gè)新對象,這個(gè)對象有著原始對象屬性值的一份精確拷貝。如果屬性是基本類型,拷貝的就是基本類型的值,如果屬性是引用類型,拷貝的就是內(nèi)存地址,所以如果其中一個(gè)對象改變了這個(gè)地址,就會(huì)影響到另一個(gè)對象。 測試結(jié)果: 深拷貝 深拷貝是將

    2024年04月26日
    瀏覽(23)
  • 數(shù)組扁平化flat方法的多種實(shí)現(xiàn)

    數(shù)組扁平化flat方法的多種實(shí)現(xiàn)

    flat() 執(zhí)行效果: toString() 注意:map()處理空值的問題 執(zhí)行效果: JSON.stringify() 注意:map()處理空值的問題 執(zhí)行效果: while() {} 執(zhí)行效果: reduce() 對于一個(gè)數(shù)組,使用 reduce() 方法遍歷其中的每個(gè)元素,如果元素是一個(gè)數(shù)組,則遞歸調(diào)用扁平化函數(shù);否則,將元素添加到結(jié)果數(shù)

    2024年02月13日
    瀏覽(19)
  • Golang每日一練(leetDay0118) 扁平化嵌套列表迭代器、整數(shù)拆分

    Golang每日一練(leetDay0118) 扁平化嵌套列表迭代器、整數(shù)拆分

    目錄 341. 扁平化嵌套列表迭代器 Flatten Nested List Iterator?????? 343. 整數(shù)拆分 Integer Break?????? ?? 每日一練刷題專欄??? Rust每日一練 專欄 Golang每日一練 專欄 Python每日一練 專欄 C/C++每日一練 專欄 Java每日一練 專欄 給你一個(gè)嵌套的整數(shù)列表? nestedList ?。每個(gè)元素要么是

    2024年02月16日
    瀏覽(54)
  • js處理扁平數(shù)組和樹結(jié)構(gòu)相互轉(zhuǎn)換

    一、將扁平的數(shù)據(jù)轉(zhuǎn)為樹形結(jié)構(gòu) 在 js中,可以使用遞歸算法將扁平的數(shù)據(jù)轉(zhuǎn)換為樹形結(jié)構(gòu)。 扁平數(shù)據(jù)通常是一個(gè)帶有 parentId 屬性的數(shù)組,而樹形結(jié)構(gòu)通常是一個(gè)帶有 children 屬性的對象。 1、方法一 下面是一個(gè)簡單的例子,演示如何將扁平數(shù)組轉(zhuǎn)換為樹形對象: 2、方法二

    2024年02月12日
    瀏覽(17)
  • [前端系列第3彈]JS入門教程:從零開始學(xué)習(xí)JavaScript

    本文將帶領(lǐng)大家,從零開始學(xué)習(xí)JavaScript,fighting~ 目錄 一、JavaScript簡介 二、變量和數(shù)據(jù)類型 三、注釋和分號 四、算術(shù)運(yùn)算符 五、表達(dá)式和語句 六、代碼塊和作用域 七、函數(shù)(最重要)? ????????JavaScript(簡稱JS)是一種運(yùn)行在瀏覽器中的腳本語言,它可以讓網(wǎng)頁變得

    2024年02月13日
    瀏覽(95)
  • JS-27 前端數(shù)據(jù)請求方式;HTTP協(xié)議的解析;JavaScript XHR、Fetch的數(shù)據(jù)請求與響應(yīng)函數(shù);前端文件上傳XHR、Fetch;安裝瀏覽器插件FeHelper

    JS-27 前端數(shù)據(jù)請求方式;HTTP協(xié)議的解析;JavaScript XHR、Fetch的數(shù)據(jù)請求與響應(yīng)函數(shù);前端文件上傳XHR、Fetch;安裝瀏覽器插件FeHelper

    早期的網(wǎng)頁都是通過后端渲染來完成的,即服務(wù)器端渲染(SSR,server side render): 客戶端發(fā)出請求 - 服務(wù)端接收請求并返回相應(yīng)HTML文檔 - 頁面刷新,客戶端加載新的HTML文檔; 服務(wù)器端渲染的缺點(diǎn): 當(dāng)用戶點(diǎn)擊頁面中的某個(gè)按鈕向服務(wù)器發(fā)送請求時(shí),頁面本質(zhì)上只是一些數(shù)

    2024年02月16日
    瀏覽(42)
  • jQuery.js - 前端必備的Javascript庫

    jQuery.js - 前端必備的Javascript庫

    作者: WangMin 格言: 努力做好自己喜歡的每一件事 jQuery.js 是什么? jQuery是一個(gè)快速簡潔、免費(fèi)開源易用的JavaScript框架, 倡導(dǎo)寫更少的代碼,做更多的事情 。它封裝JavaScript常用的功能代碼,提供了一種簡便的JavaScript設(shè)計(jì)模式,以及我們開發(fā)中常用到的操作DOM的API,優(yōu)化HTML文

    2024年02月05日
    瀏覽(90)
  • web前端框架JS學(xué)習(xí)之JavaScript類型轉(zhuǎn)換

    web前端框架JS學(xué)習(xí)之JavaScript類型轉(zhuǎn)換

    vascript有多種數(shù)據(jù)類型,如字符串、數(shù)字、布爾等,可以通過typeof語句來查看變量的數(shù)據(jù)類型。數(shù)據(jù)類型轉(zhuǎn)換就是數(shù)據(jù)類型之間相互轉(zhuǎn)換,比如把數(shù)字轉(zhuǎn)成字符串、把布爾值轉(zhuǎn)成字符串、把字符串轉(zhuǎn)成數(shù)字等,這在工作也是經(jīng)常碰到的。 本期我們就給大家說說web前端框架JS學(xué)

    2024年02月10日
    瀏覽(89)
  • 【前端靈魂腳本語言JavaScript⑤】——JS中數(shù)組的使用

    【前端靈魂腳本語言JavaScript⑤】——JS中數(shù)組的使用

    ?? 作者: 阿偉 ?? 個(gè)人主頁: Flyme awei ?? 希望大家多多支持??一起進(jìn)步呀! ?? 文章對你有幫助??關(guān)注?點(diǎn)贊??收藏?? 第一種: var 數(shù)組名 = new Array(); 創(chuàng)建一個(gè)空數(shù)組 第二種: var arr2 = new Array(10); 創(chuàng)建一個(gè)定長為10的數(shù)組 第三種 var arr3 = new Array(a,b,c); 創(chuàng)建時(shí)直接指定元素值

    2023年04月08日
    瀏覽(111)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包