1. JS 数组转对象 对象转数组  对象数组互相转换  数组对象互相转换
  2. 声明一个函数,arr_obj ,里面接收一个参数,参数类型只接受对象或者数组

  3. 如果没有传递任何参数  或者 传递的参数类型不符合要求,就会抛出错误异常

  4. 无论是没有传递任何参数 或者 传递的参数类型不符合要求,抛出异常 并 打印出传递的参数

  5. 如果要查看当前函数的对象,请通过 new 的方式实例化函数 arr_obj ,自行在控制台打印输出

  6. 调用此函数,传入数组会自动转换为对象;传入对象会自动转换为数组

  7. 针对嵌套深层次比较深的对象或者数组

    // 数组转对象、对象转数组
    function arr_obj(query) {
    // 如果未传递参数,就赋值为 undefined
    this.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"]

    可访问此处进入原文 https://mp.weixin.qq.com/s/Ged8ZbUGy14qwPf7pcjCLQ

JS 数组转对象 对象转数组 对象数组互相转换 数组对象互相转换的更多相关文章

  1. js常用数据类型(Number,String,undefined,boolean) 引用类型( function,object,null ),其他数据类型( 数组Array,时间Date,正则RegExp ),数组与对象的使用

    js常用数据类型 数字类型 | 字符串类型 | 未定义类型 | 布尔类型 typeof()函数查看变量类型 数字类型  Number var a1 = 10; var a2 = 3.66; conso ...

  2. JS中集合对象(Array、Map、Set)及类数组对象的使用与对比

    原文地址 在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java中泛型强制要求指定类型. ES6引入了iterable类型, ...

  3. js总结(一):javascript的类型:基本类型、对象和数组

    javascript 类型分为2种,一个是原始值,另一个是复杂值(对象). 一.原始值 5个原始值是:数字,字符,布尔,null,undefined. 9个原生的对象构造函数:Number Strin ...

  4. JS中集合对象(Array、Map、Set)及类数组对象的使用与对比(转载)

    在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java中泛型强制要求指定类型. ES6引入了iterable类型,Array ...

  5. Js将字符串转换成对象或数组en

    举个例子 var test='{ colkey: "col", colsinfo: "NameList" }' a.将文本转换成对象 var test='{ c ...

  6. [原创]java WEB学习笔记59:Struts2学习之路---OGNL,值栈,读取对象栈中的对象的属性,读取 Context Map 里的对象的属性,调用字段和方法,数组,list,map

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. JavaScript怎么把对象里的数据整合进另外一个数组里

    https://blog.csdn.net/qq_26222859/article/details/70331833 var json1 = [ {"guoshui":[ 3000 ...

  8. JavaScript中对象数组 根据某个属性值 然后push到新的数组

    原文链接 https://segmentfault.com/q/1010000010075035 将下列对象数组中,工资大于1w的员工,增加到对象数组 WanSalary中 var BaiduUser ...

  9. 组件的通信 :provide / inject 对象进入后,就等于不用props,然后内部对象,直接复制可以接受数组,属性不能直接复制,可以用Object.assgin覆盖对象,或者Vue的set 双向绑定数据

    组件的通信 :provide / inject 对象进入后,就等于不用props,然后内部对象,直接复制可以接受数组,属性不能直接复制,可以用Object.assgin覆盖对象,或者Vue的set 双 ...

  10. 组装数据- 对象里面是key:value, value里面是数组的形式,如 {key:[aa,bb], key:[cc,dd]}

    组合后 对象里面是key:value,value里面是数组的形式{key:[aa,bb], key:[cc,dd]} var chinaGeoCoordMap = { '无锡市': [121.4648 ...

随机推荐

  1. baselines算法库common/tile_images.py模块分析

    该模块只有一个函数,全部内容: import numpy as np def tile_images(img_nhwc): """ Tile N images into ...

  2. Cython将Numpy数组转为自定义结构体

    技术背景 前面我们写过几篇关于Cython的文章,例如Cython计算谐振势.Cython与C语言的结合.Cython调用CUDA Kernel函数.Cython有着非常Pythonic的编程范式,又 ...

  3. 【模板】树的直径(dfs & dp)

    树的直径 给定n个点 n-1条边 和每条边的val 输出直径的大小和 直径上的点的序号 input: 8 1 2 2 1 3 1 1 5 10 2 4 3 4 6 4 3 7 5 7 8 2 outp ...

  4. 项目管理工具Maven的简单配置示例

    Maven是一个强大的项目管理工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建.报告和文档.以下是一些关于Maven的具体例子,涵盖了项目配置.依赖管理.插件使用等方面: ...

  5. CANopen学习笔记(三)NMT

    NMT NMT主要用来管理和控制各个节点的状态,具体协议可以分为以下四类: NMT protocol Node guard protocol Heartbeat protocol Bootup pro ...

  6. VMware 安装 OpenWrt

    准备 OpenWrt VMDK 固件映像 你可以直接下载 VMDK 版本的 OpenWrt 固件映像,或者自己构建一个,或者从 IMG 映像文件转换.一般来说 IMG 映像文件较为容易获取,因此下面介 ...

  7. Docker的数据卷与数据卷容器操作

    一.数据卷 数据卷(Data Volumes)是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似于Linux中的mount动作. 数据卷可以提供很多有用的特性: 数据卷可以在容器之 ...

  8. 小tips:...运算符(展开运算符、剩余操作符)

    如下例子: 1. var set = new Set([1, 2, 3, 4, 4,4,4,4,2,2,2]) set=[...set] 2. let [head, ...tail] = [1, 2, ...

  9. EF Core – Table / Entity Splitting

    参考 Docs – Advanced table mapping Table Splitting Table Splitting 指的是把一个表映射到多个 Entity,或者反过来说就是把多个 Ent ...

  10. element plus 2.3.14(完成 指南 部分)

    https://element-plus.org/zh-CN/guide/design.html 设计 控制反馈: 通过界面样式和交互动效让用户可以清晰的感知自己的操作: 页面反馈: 操作后,通过页面 ...