JS中數(shù)組與對象相互轉(zhuǎn)換的實(shí)現(xiàn)方式
一、數(shù)組轉(zhuǎn)對象
1. 一維數(shù)組轉(zhuǎn)對象
如果有非字符串的鍵名,那么這個(gè)鍵名會被轉(zhuǎn)成字符串,再作為對象的鍵名
const arr1 = [{
label: '昨天',
value: '4-09'
},{
label: '今天',
value: '4-10'
},{
label: '明天',
value: '4-11'
}]
// 一維數(shù)組轉(zhuǎn)obj [{},{}] => {}
function Arr1ToObj(arr) {
const obj_1 = arr.reduce((res, item, index) => (res[index] = item.value, res), {})
console.log('一維數(shù)組轉(zhuǎn)obj', obj_1);
// 指定鍵名
const obj_2 = arr.reduce((res, item) => (res[item.label] = item.value, res), {})
console.log('一維數(shù)組轉(zhuǎn)obj----指定鍵名', obj_2);
}
Arr1ToObj(arr1)

2. 二維數(shù)組轉(zhuǎn)對象
Object.fromEntries()實(shí)現(xiàn)
const arr2 = [['昨天','4-09'], ['今天','4-10'], ['明天','4-11']]
// 二維數(shù)組轉(zhuǎn)obj [['',''],['','']] => {}
function Arr2ToObj(arr) {
return Object.fromEntries(arr)
}
console.log('二維數(shù)組轉(zhuǎn)obj', Arr2ToObj(arr2));
3. 二維數(shù)組轉(zhuǎn)對象
map實(shí)現(xiàn)
const obj_a = {a: 1}
const obj_b = {b: 1}
const arr3 = [['昨天','4-09'],['今天','4-10'],['明天','4-11'],[obj_a, '是一個(gè)引用類型的a'],[obj_b, '是一個(gè)引用類型的b']]
// 二維數(shù)組轉(zhuǎn)obj by map [['',''],['','']] => {}
function Arr2ToObjByMap(arr) {
const map = new Map(arr)
let obj = Object.create(null);
for (let [k,v] of map) {
obj[k] = v;
}
return obj;
}
console.log('二維數(shù)組轉(zhuǎn)obj by map', Arr2ToObjByMap(arr3))

二、對象轉(zhuǎn)數(shù)組
1. 對象轉(zhuǎn)一維數(shù)組
const obj = {
'上午': ['上午數(shù)組值'],
'下午': ['下午數(shù)組值'],
'晚上': ['晚上數(shù)組值'],
}
// obj轉(zhuǎn)一維數(shù)組 [{},{},{}]
function objToArr1(obj) {
let arr = []
Object.keys(obj).forEach(key => {
arr.push({
label: key,
value: obj[key]
})
})
return arr
}
console.log('obj轉(zhuǎn)一維數(shù)組',objToArr1(obj));

2. 對象轉(zhuǎn)二維數(shù)組
function objToArr2(obj) {
// 方法一
let arr = []
Object.keys(obj).forEach(key => {
arr.push([key, obj[key]])
})
return arr
// 或者 方法二
return Object.entries(obj)
}
console.log('obj轉(zhuǎn)二維數(shù)組', objToArr2(obj));

3. 對象轉(zhuǎn)二維數(shù)組
map實(shí)現(xiàn), 主要是 map 轉(zhuǎn)數(shù)組
function ObjToArrByMap(obj) {
const map = new Map(Object.entries(obj))
console.log('map', map);
// map轉(zhuǎn)對象
const my_map = new Map(map)
return [...my_map]
}
console.log('obj轉(zhuǎn)二維數(shù)組 by map', ObjToArrByMap(obj))

以上就是JS中數(shù)組與對象相互轉(zhuǎn)換的實(shí)現(xiàn)方式的詳細(xì)內(nèi)容,更多關(guān)于JS數(shù)組與對象轉(zhuǎn)換的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
js金額千分位的6種實(shí)現(xiàn)方法實(shí)例
在前端開發(fā)中經(jīng)常會遇到這樣一種需求,使用Javascript格式化數(shù)字進(jìn)行輸出,下面這篇文章主要給大家介紹了關(guān)于js金額千分位的6種實(shí)現(xiàn)方法,需要的朋友可以參考下2022-03-03
Javascript 修改String 對象 增加去除空格功能(示例代碼)
這篇文章主要介紹了Javascript 修改String 對象 增加去除空格功能(示例代碼)。需要的朋友可以過來參考下,希望對大家有所幫助2013-11-11
使用snowfall.jquery.js實(shí)現(xiàn)愛心滿屏飛的效果
這篇文章主要介紹了使用snowfall.jquery.js實(shí)現(xiàn)愛心滿屏飛的效果的相關(guān)資料,需要的朋友可以參考下2017-01-01
JS獲取當(dāng)前日期和時(shí)間的簡單實(shí)例
這篇文章主要介紹了JS獲取當(dāng)前日期和時(shí)間的簡單實(shí)例,有需要的朋友可以參考一下2013-11-11
下拉菜單點(diǎn)擊實(shí)現(xiàn)連接跳轉(zhuǎn)功能的js代碼
下拉菜單點(diǎn)擊實(shí)現(xiàn)連接跳轉(zhuǎn)效果想必不是很常見吧,下面與大家分享下具體的實(shí)現(xiàn)另有實(shí)例,感興趣的朋友可以參考下哈2013-05-05
webpack教程之webpack.config.js配置文件
本篇文章主要介紹了webpack教程之webpack.config.js配置文件 ,具有一定的參考價(jià)值,有興趣的可以了解一席2017-07-07

