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

 更新时间:2024年04月23日 08:29:09   作者:前端代码仔  
这篇文章主要介绍了JS中数组与对象相互转换的实现方式,文章通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下

一、数组转对象

1. 一维数组转对象

如果有非字符串的键名,那么这个键名会被转成字符串,再作为对象的键名

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)

2. 二维数组转对象

Object.fromEntries()实现

const arr2 = [['昨天','4-09'], ['今天','4-10'], ['明天','4-11']]
// 二维数组转obj [['',''],['','']] => {}
function Arr2ToObj(arr) {
    return Object.fromEntries(arr)
}
console.log('二维数组转obj', Arr2ToObj(arr2));

3. 二维数组转对象

map实现

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))

二、对象转数组

1. 对象转一维数组

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));

2. 对象转二维数组

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));

3. 对象转二维数组

map实现, 主要是 map 转数组

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数组与对象转换的资料请关注脚本之家其它相关文章!

相关文章

  • 利用10行js代码实现上下滚动公告效果

    利用10行js代码实现上下滚动公告效果

    这篇文章主要给大家介绍了关于利用10行js代码实现滚动公告效果的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧。
    2017-12-12
  • 原生JS实现瀑布流插件

    原生JS实现瀑布流插件

    本篇文章给大家详细分析了一个原生JS实现瀑布流插件以及代码相关讲解,对此有兴趣的读者们参考学习下吧。
    2018-02-02
  • bootstrap-table formatter 使用vue组件的方法

    bootstrap-table formatter 使用vue组件的方法

    Bootstrap table是国人开发的一款基于 Bootstrap 的 jQuery 表格插件,通过简单的设置,就可以拥有强大的单选、多选、排序、分页,以及编辑、导出、过滤(扩展)等等的功能。这篇文章重点给大家介绍bootstrap-table formatter 使用vue组件的方法,感兴趣的朋友一起看看
    2019-05-05
  • 第八篇Bootstrap下拉菜单实例代码

    第八篇Bootstrap下拉菜单实例代码

    这篇文章主要介绍了Bootstrap下拉菜单实例代码的相关知识,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-06-06
  • 微信小程序自定义单选框样式实现单选功能

    微信小程序自定义单选框样式实现单选功能

    这篇文章主要为大家详细介绍了微信小程序自定义单选框样式实现单选功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • 原生JS运动实现轮播图

    原生JS运动实现轮播图

    这篇文章主要为大家详细介绍了原生JS运动实现轮播图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01
  • 动态生成的IFRAME,设置SRC时的问题解决分析

    动态生成的IFRAME,设置SRC时的问题解决分析

    动态生成的IFRAME,设置SRC时的,不同位置带来的影响。 以下所说的是在IE7下运行的。IE6下也是同样。 在这个blog中,直接点击运行代码,和把下面代码保存到为网页在运行(以本地文件或域名访问),效果不一样。 先看例子:
    2008-04-04
  • webpack DllPlugin xxx is not defined解决办法

    webpack DllPlugin xxx is not defined解决办法

    这篇文章主要介绍了webpack DllPlugin xxx is not defined解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 5款JavaScript代码压缩工具推荐

    5款JavaScript代码压缩工具推荐

    这篇文章主要介绍了5款JavaScript代码压缩工具推荐,代码压缩(也称代码最小化)是一个从源代码中消除所有不必要的字符的过程,需要的朋友可以参考下
    2014-07-07
  • 使用原生js实现拖拽和粘贴上传图片功能

    使用原生js实现拖拽和粘贴上传图片功能

    这篇文章主要介绍了使用原生js实现拖拽和粘贴上传图片功能,Vue/Rect 生态用多了都快忘记原生js怎么写了,今天需要直接在服务器裸写个页面,实现 textarea 文本框里接收拖拽多个图片,需要的朋友可以参考下
    2024-04-04

最新评论