淺析JavaScript如何將一個(gè)帶K-V特征的JSON數(shù)組轉(zhuǎn)換為JSON對(duì)象
數(shù)據(jù)處理過程中,要將一個(gè)包含 key 和 value 屬性的 JSON 數(shù)組整合成一個(gè) JSON 對(duì)象(其中每個(gè)元素的 key 作為屬性名,value 作為屬性值),以下是幾種常用的 JavaScript 實(shí)現(xiàn)方法及示例,
方法 1:使用Array.prototype.reduce()
適用場(chǎng)景:兼容性要求高(支持 ES5+),可處理復(fù)雜邏輯(如數(shù)據(jù)過濾)。
代碼示例:
const jsonArray = [
{ key: "name", value: "Alice" },
{ key: "age", value: 25 },
{ key: "city", value: "Beijing" }
];
const jsonObject = jsonArray.reduce((obj, item) => {
obj[item.key] = item.value; // 將 key-value 對(duì)添加到對(duì)象
return obj;
}, {}); // 初始化為空對(duì)象
console.log(jsonObject);
// 輸出:{ name: "Alice", age: 25, city: "Beijing" }
說明:
通過 reduce 遍歷數(shù)組,逐步構(gòu)建對(duì)象。
方法 2:使用Object.fromEntries()(ES2019+)
適用場(chǎng)景:代碼簡(jiǎn)潔,現(xiàn)代瀏覽器或 Node.js 環(huán)境。
代碼示例:
const jsonArray = [
{ key: "name", value: "Bob" },
{ key: "age", value: 30 }
];
// 先將數(shù)組轉(zhuǎn)換為 [key, value] 形式的二維數(shù)組
const entries = jsonArray.map(item => [item.key, item.value]);
const jsonObject = Object.fromEntries(entries);
console.log(jsonObject);
// 輸出:{ name: "Bob", age: 30 }
說明:
Object.fromEntries() 直接接收鍵值對(duì)數(shù)組生成對(duì)象。
方法 3:手動(dòng)遍歷數(shù)組
適用場(chǎng)景:無需高階函數(shù),邏輯清晰易讀。
代碼示例:
const jsonArray = [
{ key: "id", value: 1001 },
{ key: "status", value: "active" }
];
const jsonObject = {};
for (const item of jsonArray) {
jsonObject[item.key] = item.value; // 逐項(xiàng)賦值
}
console.log(jsonObject);
// 輸出:{ id: 1001, status: "active" }
說明:
通過循環(huán)直接賦值,適合初學(xué)者理解。
注意事項(xiàng)
1.鍵名沖突:
若數(shù)組中有重復(fù)的 key,后出現(xiàn)的值會(huì)覆蓋先前的值。
可通過檢查重復(fù)鍵名提前處理:
if (obj.hasOwnProperty(item.key)) {
console.warn(`重復(fù)鍵名: ${item.key}`);
}
2.空數(shù)組處理:
空數(shù)組會(huì)返回空對(duì)象 {},符合預(yù)期。
3.復(fù)雜值類型:
value 可以是任意類型(對(duì)象、數(shù)組等),轉(zhuǎn)換時(shí)會(huì)保留結(jié)構(gòu)。
4.JSON 字符串轉(zhuǎn)換:
若需將結(jié)果轉(zhuǎn)為 JSON 字符串,使用 JSON.stringify(jsonObject)。
完整流程示例
// 輸入:JSON 數(shù)組
const jsonArray = [
{ key: "product", value: "Laptop" },
{ key: "price", value: 4999 },
{ key: "inStock", value: true }
];
// 方法1:reduce 轉(zhuǎn)換
const result = jsonArray.reduce((obj, item) => {
obj[item.key] = item.value;
return obj;
}, {});
console.log(result);
// 輸出:{ product: "Laptop", price: 4999, inStock: true }
總結(jié)
- 推薦方法:
- 現(xiàn)代環(huán)境 → Object.fromEntries()(代碼最簡(jiǎn)潔)。
- 兼容舊環(huán)境 → reduce() 或手動(dòng)遍歷。
- 關(guān)鍵點(diǎn):確保數(shù)組元素包含
key和value屬性,且key需為字符串類型。
通過上述方法,可高效地將結(jié)構(gòu)化數(shù)組轉(zhuǎn)換為易操作的 JSON 對(duì)象,適用于 API 數(shù)據(jù)處理、表單提交等場(chǎng)景。
到此這篇關(guān)于淺析JavaScript如何將一個(gè)帶K-V特征的JSON數(shù)組轉(zhuǎn)換為JSON對(duì)象的文章就介紹到這了,更多相關(guān)JavaScript JSON數(shù)組轉(zhuǎn)JSON對(duì)象內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python實(shí)現(xiàn)將一個(gè)帶鍵值特征的JSON數(shù)組轉(zhuǎn)換為JSON對(duì)象
- Vue3中JSON字符串轉(zhuǎn)對(duì)象的常用方法小結(jié)
- JavaScript實(shí)現(xiàn)對(duì)JSON對(duì)象數(shù)組數(shù)據(jù)進(jìn)行分頁處理
- js如何給json對(duì)象添加、刪除、修改屬性
- JavaScript實(shí)現(xiàn)字符串轉(zhuǎn)JSON對(duì)象的4種方法代碼
- 關(guān)于javascript中json 對(duì)象數(shù)組之間相互轉(zhuǎn)化問題
- JS把字符串轉(zhuǎn)成json對(duì)象的三種方法示例詳解
相關(guān)文章
WebGame《逆轉(zhuǎn)裁判》完整版 代碼下載(1月24日更新)
WebGame《逆轉(zhuǎn)裁判》完整版 代碼下載(1月24日更新)...2007-01-01
JavaScript中通用的jquery動(dòng)畫滾屏實(shí)例
這篇文章主要介紹了JavaScript中通用的jquery動(dòng)畫滾屏實(shí)例,本文通過實(shí)際代碼來詳解實(shí)現(xiàn)方法,需要的朋友可以參考一下2022-07-07
使用post方法實(shí)現(xiàn)json往返傳輸數(shù)據(jù)的方法
今天小編就為大家分享一篇關(guān)于使用post方法實(shí)現(xiàn)json往返傳輸數(shù)據(jù)的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03
window.location.href IE下跳轉(zhuǎn)失效的解決方法
這篇文章主要介紹了window.location.href IE下跳轉(zhuǎn)失效的解決方法,需要的朋友可以參考下2014-03-03
js實(shí)現(xiàn)點(diǎn)擊復(fù)制當(dāng)前文本到剪貼板功能(兼容所有瀏覽器)
這篇文章主要介紹了js實(shí)現(xiàn)點(diǎn)擊復(fù)制當(dāng)前文本到剪貼板功能,兼容所有瀏覽器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-12-12

