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

JavaScript中的Object.entries()和Object.fromEntries()示例詳解

 更新時(shí)間:2025年07月26日 15:16:22   作者:瑪卡巴卡半夜不睡覺  
在JavaScript中Object.entries()和Object.fromEntries()是處理對(duì)象轉(zhuǎn)換的利器,它們可以將對(duì)象轉(zhuǎn)換為數(shù)組進(jìn)行操作,再轉(zhuǎn)換回對(duì)象,這篇文章主要介紹了JavaScript中的Object.entries()和Object.fromEntries()的相關(guān)資料,需要的朋友可以參考下

Object.entries()

1. 基本知識(shí)

用于將對(duì)象的可枚舉屬性轉(zhuǎn)換為一個(gè)數(shù)組

該數(shù)組包含對(duì)象自身的可枚舉屬性的鍵值對(duì)數(shù)組,每個(gè)鍵值對(duì)數(shù)組由兩個(gè)元素組成:

  • 第一個(gè)元素是屬性名字符串(或符號(hào))
  • 第二個(gè)元素是屬性值,任何類型

對(duì)象的屬性默認(rèn)是可枚舉的,意味著它們可以在 for...in 循環(huán)中被枚舉出來
使用 Object.defineProperty 方法可以設(shè)置或修改屬性的可枚舉性

基本的用法如下:

  • 基本用法:
const obj = { a: 1, b: 2, c: 3 };
const entries = Object.entries(obj);
console.log(entries);
// 輸出: [['a', 1], ['b', 2], ['c', 3]]
  • 處理空對(duì)象:
const emptyObj = {};
const entries = Object.entries(emptyObj);
console.log(entries);
// 輸出: []
  • 與其他方法的比較:
    Object.keys(obj): 返回一個(gè)包含對(duì)象所有可枚舉屬性名的數(shù)組
    Object.values(obj):返回一個(gè)包含對(duì)象所有可枚舉屬性值的數(shù)組
    Object.entries(obj): 返回一個(gè)包含對(duì)象所有可枚舉屬性的鍵值對(duì)數(shù)組
const obj = { a: 1, b: 2, c: 3 };

console.log(Object.keys(obj));
// 輸出: ['a', 'b', 'c']

console.log(Object.values(obj));
// 輸出: [1, 2, 3]

console.log(Object.entries(obj));
// 輸出: [['a', 1], ['b', 2], ['c', 3]]
  • 非對(duì)象參數(shù):
    如果傳入非對(duì)象參數(shù)(如 null 或 undefined),Object.entries 會(huì)拋出錯(cuò)誤
try {
    console.log(Object.entries(null));
} catch (e) {
    console.error(e);
    // 輸出: TypeError: Cannot convert undefined or null to object
}
  • 使用 for…of 迭代
    Object.entries 返回的數(shù)組可以使用 for...of 迭代
const obj = { x: 10, y: 20, z: 30 };

for (const [key, value] of Object.entries(obj)) {
    console.log(`${key}: ${value}`);
}
// 輸出:
// x: 10
// y: 20
// z: 30

2. Demo

示例 1:過濾對(duì)象的屬性

通過 Object.entries 結(jié)合 filter 方法,篩選出滿足特定條件的鍵值對(duì)

const obj = { a: 1, b: 2, c: 3, d: 4 };

const filteredEntries = Object.entries(obj).filter(([key, value]) => value > 2);
console.log(filteredEntries);
// 輸出: [['c', 3], ['d', 4]]

 示例 2: 對(duì)象屬性值的轉(zhuǎn)換

使用 map 方法對(duì)對(duì)象屬性值進(jìn)行轉(zhuǎn)換,然后重新構(gòu)建對(duì)象

const obj = { name: 'Alice', age: 25 };

const transformedEntries = Object.entries(obj).map(([key, value]) => {
    return [key, typeof value === 'string' ? value.toUpperCase() : value];
});

const newObj = Object.fromEntries(transformedEntries);
console.log(newObj);
// 輸出: { name: 'ALICE', age: 25 }

示例 3:嵌套對(duì)象處理

const nestedObj = {
    user: {
        name: 'Bob',
        age: 30
    },
    location: {
        city: 'New York',
        country: 'USA'
    }
};

const nestedEntries = Object.entries(nestedObj).flatMap(([key, value]) =>
    Object.entries(value).map(([subKey, subValue]) => [`${key}.${subKey}`, subValue])
);

console.log(nestedEntries);
// 輸出: [['user.name', 'Bob'], ['user.age', 30], ['location.city', 'New York'], ['location.country', 'USA']]

示例 4:動(dòng)態(tài)構(gòu)建對(duì)象

const entries = [['a', 1], ['b', 2], ['c', 3]];

const obj = Object.fromEntries(entries);
console.log(obj);
// 輸出: { a: 1, b: 2, c: 3 }

示例 5:結(jié)合其他方法進(jìn)行數(shù)據(jù)處理

使用 reduce 方法結(jié)合 Object.entries 對(duì)對(duì)象進(jìn)行復(fù)雜的數(shù)據(jù)處理

const obj = { apple: 10, banana: 20, cherry: 30 };

const total = Object.entries(obj).reduce((sum, [key, value]) => sum + value, 0);
console.log(total);
// 輸出: 60

示例 6:轉(zhuǎn)換對(duì)象為查詢字符串

const params = { name: 'Alice', age: 25, city: 'Wonderland' };

const queryString = Object.entries(params)
    .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
    .join('&');

console.log(queryString);
// 輸出: 'name=Alice&age=25&city=Wonderland'

Object.fromEntries()

一、輕松將鍵值對(duì)數(shù)組轉(zhuǎn)為對(duì)象,后端數(shù)據(jù)處理神器

當(dāng)從后端接口拿到的數(shù)據(jù)是[['key1', 'value1'], ['key2', 'value2']]這種鍵值對(duì)數(shù)組格式時(shí),想把它轉(zhuǎn)為對(duì)象方便使用,傳統(tǒng)方法可能需要寫一堆循環(huán)代碼。Object.fromEntries()方法完美解決這個(gè)痛點(diǎn),它是ES10的新特性,在前后端數(shù)據(jù)交互中堪稱“瑞士軍刀”。

// 假設(shè)后端返回的用戶信息是鍵值對(duì)數(shù)組
const userArray = [
    ['name', 'Tom'],
    ['age', 28],
    ['email', 'tom@example.com']
];
// 使用Object.fromEntries()將鍵值對(duì)數(shù)組轉(zhuǎn)為對(duì)象
const userObject = Object.fromEntries(userArray);
console.log(userObject); 
// {name: 'Tom', age: 28, email: 'tom@example.com'}

 在處理登錄接口返回?cái)?shù)據(jù)、表單提交數(shù)據(jù)解析等場(chǎng)景時(shí),這個(gè)方法能讓你少寫幾十行代碼,開發(fā)效率直接起飛!

總結(jié)

到此這篇關(guān)于JavaScript中的Object.entries()和Object.fromEntries()示例詳解的文章就介紹到這了,更多相關(guān)Js中Object.entries() 和Object.fromEntries()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 寫出更好的JavaScript程序之undefined篇(中)

    寫出更好的JavaScript程序之undefined篇(中)

    前一篇我介紹了幾種廣為使用的利用undefined這個(gè)概念值的辦法,這一篇我會(huì)介紹一些不太常見的辦法,其中還包括一個(gè)很巧妙的,我個(gè)人覺得很值得推廣的辦法。
    2009-11-11
  • JS實(shí)現(xiàn)的對(duì)象去重功能示例

    JS實(shí)現(xiàn)的對(duì)象去重功能示例

    這篇文章主要介紹了JS實(shí)現(xiàn)的對(duì)象去重功能,結(jié)合實(shí)例形式分析了javascript針對(duì)json對(duì)象的遍歷、判斷、運(yùn)算實(shí)現(xiàn)去重功能相關(guān)操作技巧,需要的朋友可以參考下
    2019-06-06
  • IE6/7 and IE8/9/10(IE7模式)依次隱藏具有absolute或relative的父元素和子元素后再顯示父元素

    IE6/7 and IE8/9/10(IE7模式)依次隱藏具有absolute或relative的父元素和子元素后再顯示

    多數(shù)情況下隱藏(設(shè)置display:none)一個(gè)元素,無需依次將其內(nèi)的所有子元素都隱藏。非要這么做,有時(shí)會(huì)碰到意想不到的bug。
    2011-07-07
  • js保存當(dāng)前路徑(cookies記錄)

    js保存當(dāng)前路徑(cookies記錄)

    曾經(jīng)做了一個(gè)取消訂單的功能。這個(gè)功能在個(gè)人中心里面有,在訂單的詳細(xì)頁面也有。按照正常的思路,這兩塊都可以提交到相同的action去處理,但是返回的頁面是不一樣的,都是返回到當(dāng)前頁面就可以了。
    2010-12-12
  • 詳解JavaScript作用域 閉包

    詳解JavaScript作用域 閉包

    這篇文章主要介紹了JavaScript作用域 閉包的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • js實(shí)現(xiàn)簡(jiǎn)易的英漢詞典

    js實(shí)現(xiàn)簡(jiǎn)易的英漢詞典

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)簡(jiǎn)易的英漢詞典,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • JavaScript提高加載和執(zhí)行效率的方法

    JavaScript提高加載和執(zhí)行效率的方法

    JavaScript在瀏覽器中的性能成為開發(fā)者所面臨的最重要的可用性問題。而這個(gè)問題又因JavaScript的阻塞特性變的復(fù)雜,也就是說當(dāng)瀏覽器在執(zhí)行JavaScript代碼時(shí),不能同時(shí)做其他任何事情。本文詳細(xì)介紹了如何正確的加載和執(zhí)行JavaScript代碼,從而提高其在瀏覽器中的性能。
    2017-02-02
  • 不用一句js代碼初始化組件

    不用一句js代碼初始化組件

    不用一句js代碼初始化組件,是不是很神奇?
    2016-01-01
  • js最簡(jiǎn)單的雙向綁定實(shí)例講解

    js最簡(jiǎn)單的雙向綁定實(shí)例講解

    下面小編就為大家分享一篇js最簡(jiǎn)單的雙向綁定實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • JavaScript動(dòng)態(tài)添加數(shù)據(jù)到表單并提交的幾種方式

    JavaScript動(dòng)態(tài)添加數(shù)據(jù)到表單并提交的幾種方式

    這篇文章主要介紹了JavaScript動(dòng)態(tài)添加數(shù)據(jù)到表單并提交,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-06-06

最新評(píng)論