目录

一、数组怎么转对象

二、对象转数组

三、相互转换封装成函数


一、数组怎么转对象

1、需求

let arr = [{label: '男', value: 0},{label: '女', value: 1}]
// 转换为
let obj = {0:'男', 1:'女'}

2、实现

思路一:

  1. 使用数组的forEach方法遍历数组
  2. 定义一个空对象
  3. 将遍历得到的每一个对象中的value值当做新对象的key,label的值当做新对象的值
  4. 循环结束后将obj的值返回给调用者即可
let arr = [{label: '男', value: 0},{label: '女', value: 1}]function arrToObj(arr){let obj = {}arr.forEach(item => {obj[item.value] = item.label})return obj
}const obj1 = arrToObj(arr)
console.log('数组forEach方法', obj1)

思路二:

  1. 使用数组的forEach方法遍历数组
  2. 定义一个空对象
  3. 将遍历得到的每一个对象中的value值当做新对象的key,label的值当做新对象的值
  4. 循环结束后将obj的值返回给调用者即可
let arr = [{label: '男', value: 0},{label: '女', value: 1}]function arrToObj1(arr){return arr.reduce((obj,item) => {obj[item.value] = item.labelreturn obj},{})
}const obj2 = arrToObj1(arr)
console.log('数组reduce方法', obj2)

二、对象转数组

1. 需求

let obj = { 0: '男', 1: '女' }
// 转换为
let arr = [{label: '男', value: 0},{label: '女', value: 1}]

2. 实现

let obj = { 0: '男', 1: '女' }// 使用for...in...循环,拿到对象的键、值
// 将其组成新对象,使用数组的push方法追加到数组中
function objToArr(obj){let arr = []for(let key in obj){arr.push({label: obj[key],value: key})}return arr
}const arr = objToArr(obj)
console.log(arr)

三、相互转换封装成函数

// 数组转对象、对象转数组
function arr_obj(query) {// 如果未传递参数,就赋值为 undefinedthis.query = query || undefined;this.params = this.query;// 默认对象var defaultObj = {};// 默认数组var defaultArr = [];// 数组转对象this.arrToObj = function(arr) {var obj = {}for (var i = 0; i < arr.length; i++) {// 数组转为对象,对象的键=数组值, 对象的值=数组值obj[arr[i]] = arr[i];// 如果是数组,就再次调用自身 (this.arrToObj),递归接着循环if (Object.prototype.toString.call(arr[i]) == "[object Array]") {var deepArray = this.arrToObj(arr[i])continue;} else {defaultObj[arr[i]] = arr[i]}}this.params = defaultObj;};// 对象转数组this.objToArr = function(obj) {var arr = [];for (var i in obj) {arr.push(obj[i]);// 如果是对象,就再次调用自身 (this.ObjToObj),递归接着循环if(Object.prototype.toString.call(obj[i]) == "[object Object]"){var deepObject=this.objToArr(obj[i]);continue;}else{defaultArr.push(obj[i])}}this.params = defaultArr;};if (Object.prototype.toString.call(this.query) == "[object Array]") {this.arrToObj(this.query);} else if (Object.prototype.toString.call(this.query) == "[object Object]") {this.objToArr(this.query);} else if (Object.prototype.toString.call(this.query) == "[object Undefined]") {console.error("没有获取到传递进来的参数", this.params);throw "没有获取到传递进来的参数"} else {console.error("错误的参数:", this.params,"错误的参数类型:", Object.prototype.toString.call(this.params));throw "传递的参数只能是对象或者数组类型"}return this.params;
}
// 调用 对象转数组
var obj = {a1:"a",b1:{c1:"c",d1:"d",q1:{q:"q",w:"w",},},e1:"e",f1:"f"};
// // 调用 数组转对象
var arr = ["a", ["c",["e"],"q"],"t"];
var asd1 = new arr_obj(arr);
console.log(asd1);
// 输出 {a: "a", c: "c", e: "e", q: "q", t: "t"}
// 调用 对象转数组
var asd2=new arr_obj(obj);
console.log(asd2);
// 输出  ["a", "c", "d", "q", "w", "e", "f"]

数组怎么转对象,对象怎么转数组相关推荐

  1. php 字符串数组转数组对象_php怎么将数组转成对象?

    php将数组转成对象的方法:1.使用数据类型转换,在数组变量前添加"(Object)"来将数组转成对象.2.先使用json_encode()函数将数组转换为json字符串:然后使用 ...

  2. php对象和数组的效率,PHP对象数组和一般数组区别

    PHP中的foreach作为经常用到的函数,常常用来遍历数组,对于数组中的元素是值的情形(如一般常见型的数组),foreach只是将数组中的每份元素的值拷贝到each后面的变量,也就是对值本身的拷贝, ...

  3. 通过属性值从对象数组中获取JavaScript对象[重复]

    本文翻译自:Get JavaScript object from array of objects by value of property [duplicate] This question alr ...

  4. 对象转数组_fastJson中java对象 jsonObject jsonArray之间转换

    一.介绍 简介:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式 二.使用 1.java对象转jsonObject User u = new User(); ...

  5. Jackson:数组json字符串转对象集合(List)的两种方式

    首先,创建个实体类Person import java.util.List;public class Person {private String name;private Integer age;p ...

  6. 在js对象上绑定js数组原生方法

    在js对象上绑定js数组原生方法 在js对象上绑定数组方法会给当前对象添加一个lenght:0属性 例: var o = {}; [].pop.call(o) console.log(o)//返回结果 ...

  7. 当 Vue 处理数组与处理纯对象的方式一样

    处理数组方法的弊端 Vue 在响应式的处理中,对数组与对象采用了不同的方式,如下源码所示: if (Array.isArray(value)) {const augment = hasProto? p ...

  8. 【干货】原生js做的一维数组对象,二维数组对象的模糊查询(前端网备份)...

    最重要的是二维数组 小程序通讯录(student) 后台的数据格式 wxml <input bindconfirm="search" bindinput="bind ...

  9. TP5.1查询用Db('不含表前缀')/Db::name('不含表前缀')/Db::table('含表前缀')返回数组;model()返回对象

    TP5.1查询用Db(('不含表前缀')/Db::name('不含表前缀')/Db::table('含表前缀')返回数组:model()返回对象 all():可直接传数组查询 select():传数组 ...

  10. JS 将有规律的数组,转换成对象数组

    在工作中经常会遇到解析数据的问题,今天需要用js实现,将一个含有一些有规律数据的数组,解析成对象数组. 比如: ['123','er','456', 'fr'] ==>[{id: '123', ...

最新文章

  1. springboot jpa 复合主键 联合主键
  2. java 对象 方法_java——类、对象、方法
  3. 使用Object.observe 实现数据绑定
  4. Android Glide图片加载框架(四)回调与监听
  5. 喜讯,Asp.net Ajax 文档提供下载
  6. 如何缩小码农和高手的差距
  7. python目录结构生成库,使用CMake构建平台无关的目录结构
  8. 其实,大部分人都不需要你去培养
  9. java打字游戏代码_牛逼啊!一个随时随地写Python代码的神器
  10. .form文件_含文件上传的form表单AJAX提交小结
  11. 偏微分方程数值解---学习总结
  12. 【漏洞学习——SSRF】七牛某站SSRF可探测内网
  13. PIXI入门-PIXI文档翻译(1)
  14. 学习Vue3 第二十七章(自定义指令directive)
  15. 或再被“转手”,家乐福中国还能“攀”上哪座靠山?
  16. Layui数据表格每一行动态显示倒计时
  17. Python ffmpeg视频压缩
  18. 华裔科学家张首晟:个人数据完全由个人拥有
  19. 使用Freeman链码提取影像边界
  20. react想要子组件每次显示的时候都执行componentDidMount方法

热门文章

  1. J2EE 应用服务器技术
  2. 将页面的table表格导出为excel或者word
  3. 密码学中的“盐值 Salt”
  4. 荣耀赵明TEDx再谈创新:坚持加码AI,深蹲才能跳得远
  5. 动态 SQL 语句大全
  6. 简单理解高内聚低耦合-高内聚低耦合通俗理解是什么?
  7. 第1章 电子商务概述
  8. idea页面只能显示一个项目_IntelliJ IDEA 同一个窗口打开多个项目
  9. python字符串转日期函数
  10. 计算机毕业设计基于asp.net家庭个人理财系统