JavaScript將對(duì)象轉(zhuǎn)換為數(shù)組的多種方式
JavaScript對(duì)象轉(zhuǎn)數(shù)組
1. 將對(duì)象的鍵(Keys)轉(zhuǎn)換為數(shù)組
使用 Object.keys() 提取對(duì)象的所有可枚舉屬性名:
const obj = { a: 1, b: 2, c: 3 };
const keys = Object.keys(obj);
console.log(keys); // ["a", "b", "c"]
2. 將對(duì)象的值(Values)轉(zhuǎn)換為數(shù)組
使用 Object.values() 提取對(duì)象的所有可枚舉屬性值:
const obj = { a: 1, b: 2, c: 3 };
const values = Object.values(obj);
console.log(values); // [1, 2, 3]
3. 將對(duì)象的鍵值對(duì)(Entries)轉(zhuǎn)換為數(shù)組
使用 Object.entries() 提取鍵值對(duì),返回 [key, value] 格式的二維數(shù)組:
const obj = { a: 1, b: 2, c: 3 };
const entries = Object.entries(obj);
console.log(entries);
// [ ["a", 1], ["b", 2], ["c", 3] ]
4. 將類數(shù)組對(duì)象(Array-like Object)轉(zhuǎn)為數(shù)組
使用 Array.from() 或 擴(kuò)展運(yùn)算符(...) 轉(zhuǎn)換類數(shù)組對(duì)象(如 arguments、DOM 元素集合):
// 示例 1: arguments 對(duì)象
function example() {
const argsArray = Array.from(arguments);
console.log(argsArray); // [1, 2, 3]
}
example(1, 2, 3);
// 示例 2: NodeList(DOM 元素列表)
const divs = document.querySelectorAll("div");
const divArray = [...divs]; // 擴(kuò)展運(yùn)算符
5. 自定義轉(zhuǎn)換(復(fù)雜對(duì)象處理)
使用 Array.map() 或 reduce() 對(duì)對(duì)象屬性進(jìn)行靈活處理:
const obj = { a: 1, b: 2, c: 3 };
// 轉(zhuǎn)換為 [{ key: 'a', value: 1 }, ...]
const arr = Object.entries(obj).map(([key, value]) => ({ key, value }));
console.log(arr);
// [
// { key: "a", value: 1 },
// { key: "b", value: 2 },
// { key: "c", value: 3 }
// ]
6. 處理嵌套對(duì)象(遞歸轉(zhuǎn)換)
若對(duì)象包含嵌套結(jié)構(gòu),需遞歸處理:
function deepConvert(obj) {
return Object.entries(obj).map(([key, value]) => {
if (typeof value === "object" && value !== null) {
return [key, deepConvert(value)]; // 遞歸處理嵌套對(duì)象
}
return [key, value];
});
}
const nestedObj = { a: 1, b: { c: 2, d: { e: 3 } } };
console.log(deepConvert(nestedObj));
// [ ["a", 1], ["b", [ ["c", 2], ["d", [ ["e", 3] ] ] ] ]
總結(jié)
| 場(chǎng)景 | 方法 | 示例 |
|---|---|---|
| 提取鍵 | Object.keys() | ["a", "b", "c"] |
| 提取值 | Object.values() | [1, 2, 3] |
| 提取鍵值對(duì) | Object.entries() | [ ["a",1], ["b",2] ] |
| 類數(shù)組對(duì)象轉(zhuǎn)數(shù)組 | Array.from() 或 [...] | [div1, div2] |
| 自定義格式轉(zhuǎn)換 | map + Object.entries() | [{ key: "a", value: 1 }, ...] |
| 嵌套對(duì)象轉(zhuǎn)多維數(shù)組 | 遞歸處理 | [ ["a",1], ["b", [ ["c",2] ] ] |
注意事項(xiàng)
- Symbol 屬性:
Object.keys()/values()/entries()不包含 Symbol 類型的鍵,需使用Object.getOwnPropertySymbols()。 - 不可枚舉屬性:上述方法僅提取可枚舉屬性,若需包含所有屬性,需用
Reflect.ownKeys()。 - 舊瀏覽器兼容性:
Object.values()和Object.entries()需 ES2017+ 支持,舊環(huán)境需 Polyfill。
到此這篇關(guān)于JavaScript將對(duì)象轉(zhuǎn)換為數(shù)組的多種方式的文章就介紹到這了,更多相關(guān)JavaScript對(duì)象轉(zhuǎn)為數(shù)組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在IE8上JS實(shí)現(xiàn)combobox支持拼音檢索功能
這篇文章主要介紹了在IE8上JS實(shí)現(xiàn)combobox支持拼音檢索功能的相關(guān)資料,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-05-05
JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)端播放攝像頭實(shí)時(shí)畫(huà)面
這篇文章主要介紹了如何利用JavaScript實(shí)現(xiàn)在網(wǎng)頁(yè)端播放局域網(wǎng)(不能上云)或是廣域網(wǎng)的攝像頭的實(shí)時(shí)畫(huà)面,文中的示例代碼講解詳細(xì),需要的可以參考一下2022-02-02
bootstrap時(shí)間控件daterangepicker使用方法及各種小bug修復(fù)
這篇文章主要介紹了bootstrap時(shí)間控件daterangepicker使用方法,及各種小bug修復(fù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
js中apply和Math.max()函數(shù)的問(wèn)題及區(qū)別介紹
這篇文章主要介紹了js中apply和Math.max()函數(shù)的問(wèn)題,本文給大家?guī)?lái)兩種答案,每一種答案給大家介紹的非常詳細(xì),在文章底部給大家提到了js中Math.max.apply和Math.max的區(qū)別,感興趣的朋友一起看看吧2018-03-03
兩種不同的方法實(shí)現(xiàn)js對(duì)checkbox進(jìn)行全選和反選
這篇文章主要介紹了通過(guò)兩種不同的方法實(shí)現(xiàn)js對(duì)checkbox進(jìn)行全選和反選,需要的朋友可以參考下2014-05-05
如何利用Three.js實(shí)現(xiàn)web端顯示點(diǎn)云數(shù)據(jù)
這篇文章主要給大家介紹了關(guān)于如何利用Three.js實(shí)現(xiàn)web端顯示點(diǎn)云數(shù)據(jù)的相關(guān)資料,最近在項(xiàng)目中遇到需求,需要在web端顯示點(diǎn)云數(shù)據(jù),將我的實(shí)現(xiàn)步驟介紹在這里供大家參考,需要的朋友可以參考下2023-11-11
關(guān)于js中e.preventDefault()的具體使用
本文主要介紹了關(guān)于js中e.preventDefault()的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
js+canvas實(shí)現(xiàn)兩張圖片合并成一張圖片的方法
這篇文章主要介紹了js+canvas實(shí)現(xiàn)兩張圖片合并成一張圖片的方法,結(jié)合實(shí)例形式分析了JavaScript結(jié)合HTML5 canvas實(shí)現(xiàn)圖片合并的操作技巧,并附帶了Java圖片合并的實(shí)現(xiàn)方法,需要的朋友可以參考下2019-11-11

