JS 数组转对象 对象转数组 对象数组互相转换 数组对象互相转换
- JS 数组转对象 对象转数组 对象数组互相转换 数组对象互相转换
声明一个函数,arr_obj ,里面接收一个参数,参数类型只接受对象或者数组
如果没有传递任何参数 或者 传递的参数类型不符合要求,就会抛出错误异常
无论是没有传递任何参数 或者 传递的参数类型不符合要求,抛出异常 并 打印出传递的参数
如果要查看当前函数的对象,请通过 new 的方式实例化函数 arr_obj ,自行在控制台打印输出
调用此函数,传入数组会自动转换为对象;传入对象会自动转换为数组
针对嵌套深层次比较深的对象或者数组
// 数组转对象、对象转数组
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 数组转对象 对象转数组 对象数组互相转换 数组对象互相转换的更多相关文章
- js常用数据类型(Number,String,undefined,boolean) 引用类型( function,object,null ),其他数据类型( 数组Array,时间Date,正则RegExp ),数组与对象的使用
js常用数据类型 数字类型 | 字符串类型 | 未定义类型 | 布尔类型 typeof()函数查看变量类型 数字类型 Number var a1 = 10; var a2 = 3.66; conso ...
- JS中集合对象(Array、Map、Set)及类数组对象的使用与对比
原文地址 在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java中泛型强制要求指定类型. ES6引入了iterable类型, ...
- js总结(一):javascript的类型:基本类型、对象和数组
javascript 类型分为2种,一个是原始值,另一个是复杂值(对象). 一.原始值 5个原始值是:数字,字符,布尔,null,undefined. 9个原生的对象构造函数:Number Strin ...
- JS中集合对象(Array、Map、Set)及类数组对象的使用与对比(转载)
在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java中泛型强制要求指定类型. ES6引入了iterable类型,Array ...
- Js将字符串转换成对象或数组en
举个例子 var test='{ colkey: "col", colsinfo: "NameList" }' a.将文本转换成对象 var test='{ c ...
- [原创]java WEB学习笔记59:Struts2学习之路---OGNL,值栈,读取对象栈中的对象的属性,读取 Context Map 里的对象的属性,调用字段和方法,数组,list,map
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- JavaScript怎么把对象里的数据整合进另外一个数组里
https://blog.csdn.net/qq_26222859/article/details/70331833 var json1 = [ {"guoshui":[ 3000 ...
- JavaScript中对象数组 根据某个属性值 然后push到新的数组
原文链接 https://segmentfault.com/q/1010000010075035 将下列对象数组中,工资大于1w的员工,增加到对象数组 WanSalary中 var BaiduUser ...
- 组件的通信 :provide / inject 对象进入后,就等于不用props,然后内部对象,直接复制可以接受数组,属性不能直接复制,可以用Object.assgin覆盖对象,或者Vue的set 双向绑定数据
组件的通信 :provide / inject 对象进入后,就等于不用props,然后内部对象,直接复制可以接受数组,属性不能直接复制,可以用Object.assgin覆盖对象,或者Vue的set 双 ...
- 组装数据- 对象里面是key:value, value里面是数组的形式,如 {key:[aa,bb], key:[cc,dd]}
组合后 对象里面是key:value,value里面是数组的形式{key:[aa,bb], key:[cc,dd]} var chinaGeoCoordMap = { '无锡市': [121.4648 ...
随机推荐
- baselines算法库common/tile_images.py模块分析
该模块只有一个函数,全部内容: import numpy as np def tile_images(img_nhwc): """ Tile N images into ...
- Cython将Numpy数组转为自定义结构体
技术背景 前面我们写过几篇关于Cython的文章,例如Cython计算谐振势.Cython与C语言的结合.Cython调用CUDA Kernel函数.Cython有着非常Pythonic的编程范式,又 ...
- 【模板】树的直径(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 ...
- 项目管理工具Maven的简单配置示例
Maven是一个强大的项目管理工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建.报告和文档.以下是一些关于Maven的具体例子,涵盖了项目配置.依赖管理.插件使用等方面: ...
- CANopen学习笔记(三)NMT
NMT NMT主要用来管理和控制各个节点的状态,具体协议可以分为以下四类: NMT protocol Node guard protocol Heartbeat protocol Bootup pro ...
- VMware 安装 OpenWrt
准备 OpenWrt VMDK 固件映像 你可以直接下载 VMDK 版本的 OpenWrt 固件映像,或者自己构建一个,或者从 IMG 映像文件转换.一般来说 IMG 映像文件较为容易获取,因此下面介 ...
- Docker的数据卷与数据卷容器操作
一.数据卷 数据卷(Data Volumes)是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似于Linux中的mount动作. 数据卷可以提供很多有用的特性: 数据卷可以在容器之 ...
- 小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, ...
- EF Core – Table / Entity Splitting
参考 Docs – Advanced table mapping Table Splitting Table Splitting 指的是把一个表映射到多个 Entity,或者反过来说就是把多个 Ent ...
- element plus 2.3.14(完成 指南 部分)
https://element-plus.org/zh-CN/guide/design.html 设计 控制反馈: 通过界面样式和交互动效让用户可以清晰的感知自己的操作: 页面反馈: 操作后,通过页面 ...