前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JS中数组、对象相互转换实现方式

JS中数组、对象相互转换实现方式

作者头像
用户6256742
发布2024-06-28 10:20:12
860
发布2024-06-28 10:20:12
举报
文章被收录于专栏:网络日志网络日志

一、数组转对象

1. 一维数组转对象(如果有非字符串的键名,那么这个键名会被转成字符串,再作为对象的键名
代码语言:javascript
复制
const arr1 = [{
    label: '昨天',
    value: '4-09'
},{
    label: '今天',
    value: '4-10'
 
},{
    label: '明天',
     value: '4-11'
}]

// 一维数组转obj [{},{}] => {}
function Arr1ToObj(arr) {
    const obj_1 = arr.reduce((res, item, index) => (res[index] = item.value, res), {})
    console.log('一维数组转obj', obj_1);
 
    // 指定键名
    const obj_2 = arr.reduce((res, item) => (res[item.label] = item.value, res), {})
    console.log('一维数组转obj----指定键名', obj_2);
}

Arr1ToObj(arr1)
JS中数组、对象相互转换实现方式
JS中数组、对象相互转换实现方式
2. 二维数组转对象 (Object.fromEntries()实现)
代码语言:javascript
复制
const arr2 = [['昨天','4-09'], ['今天','4-10'], ['明天','4-11']]
// 二维数组转obj [['',''],['','']] => {}
function Arr2ToObj(arr) {
    return Object.fromEntries(arr)
}
console.log('二维数组转obj', Arr2ToObj(arr2));
3. 二维数组转对象 (map实现)
代码语言:javascript
复制
const obj_a = {a: 1}
const obj_b = {b: 1}
const arr3 = [['昨天','4-09'],['今天','4-10'],['明天','4-11'],[obj_a, '是一个引用类型的a'],[obj_b, '是一个引用类型的b']]
        
// 二维数组转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('二维数组转obj by map', Arr2ToObjByMap(arr3))
JS中数组、对象相互转换实现方式
JS中数组、对象相互转换实现方式

二、对象转数组

1. 对象转一维数组
代码语言:javascript
复制
const obj = {
    '上午': ['上午数组值'],
    '下午': ['下午数组值'],
    '晚上': ['晚上数组值'],
}
// obj转一维数组 [{},{},{}]
function objToArr1(obj) {
    let arr = []
    Object.keys(obj).forEach(key => {
        arr.push({
            label: key,
            value: obj[key]
        })
    })
    return arr
}
console.log('obj转一维数组',objToArr1(obj));
JS中数组、对象相互转换实现方式
JS中数组、对象相互转换实现方式
2. 对象转二维数组
代码语言:javascript
复制
function objToArr2(obj) {
    // 方法一
    let arr = []
    Object.keys(obj).forEach(key => {
        arr.push([key, obj[key]])
    })
    return arr
    
    // 或者 方法二
    return Object.entries(obj)
}
console.log('obj转二维数组', objToArr2(obj));
JS中数组、对象相互转换实现方式
JS中数组、对象相互转换实现方式
3. 对象转二维数组 (map实现, 主要是 map 转数组)
代码语言:javascript
复制
function ObjToArrByMap(obj) {
    const map = new Map(Object.entries(obj))
    console.log('map', map);
    // map转对象
    const my_map = new Map(map)
    return [...my_map]
}
console.log('obj转二维数组 by map', ObjToArrByMap(obj))
JS中数组、对象相互转换实现方式
JS中数组、对象相互转换实现方式
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、数组转对象
    • 1. 一维数组转对象(如果有非字符串的键名,那么这个键名会被转成字符串,再作为对象的键名)
      • 2. 二维数组转对象 (Object.fromEntries()实现)
        • 3. 二维数组转对象 (map实现)
        • 二、对象转数组
          • 1. 对象转一维数组
            • 2. 对象转二维数组
              • 3. 对象转二维数组 (map实现, 主要是 map 转数组)
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档