JS里的居民们7-对象和数组转换
编码
学习通用的数据用不同的数据结构进行存储,以及相互的转换
对象转为数组:
var scoreObject = {
"Tony": {
"Math": 95,
"English": 79,
"Music": 68
},
"Simon": {
"Math": 100,
"English": 95,
"Music": 98
},
"Annie": {
"Math": 54,
"English": 65,
"Music": 88
}
}
如上有一个用来存储学习成绩的对象,编写一个函数,将其转为如下的二维数组
var scoreArray = [
["Tony", 95, 79, 68],
……
];
数组转为对象:
var menuArr = [
[1, "Area1", -1],
[2, "Area2", -1],
[3, "Area1-1", 1],
[4, "Area1-2", 1],
[5, "Area2-1", 2],
[6, "Area2-2", 2],
[7, "Area1-2-3", 4],
[8, "Area2-2-1", 6],
];
如上有一个用来存储多级菜单数据的数组,编写一个函数,将其转为如下的对象
var menuObject = {
"1": {
name: "Area1",
subMenu: {
"3": {
name: "Area1-1"
},
"4": {
name: "Area1-2",
subMenu: {
"7": {
name: "Area1-2-3"
}
}
}
}
}
……
}
<!DOCTYPE html>
<html> <head>
<meta charset="utf-8" />
<title>JS里的居民们9-对象和数组转换</title>
</head> <body>
<script>
//对象转数组
var scoreObject = {
"Tony": {
"Math": 95,
"English": 79,
"Music": 68
},
"Simon": {
"Math": 100,
"English": 95,
"Music": 98
},
"Annie": {
"Math": 54,
"English": 65,
"Music": 88
}
}
var arr1 = [];
for (var i in scoreObject) {
var arr2 = [];
arr2.push(i);
for (var j in scoreObject[i]) {
arr2.push(scoreObject[i][j]);
}
arr1.push(arr2);
}
console.log(arr1);
//数组转对象
var menuArr = [
[1, "Area1", -1],
[2, "Area2", -1],
[3, "Area1-1", 1],
[4, "Area1-2", 1],
[5, "Area2-1", 2],
[6, "Area2-2", 2],
[7, "Area1-2-3", 4],
[8, "Area2-2-1", 6],
]; var menuObject = {};
menuArr.forEach((current, index) => {
if (current[2] == -1) {
menuObject[current[0]] = {
"name": current[1],
"subMenu": {}
}
}
if (current[2] == 1) {
menuObject["1"]["subMenu"][current[0]] = {
"name": current[1],
"subMenu": {}
}
}
if (current[2] == 2) {
menuObject["2"]["subMenu"][current[0]] = {
"name": current[1],
"subMenu": {}
}
}
if (current[2] == 4) {
menuObject["1"]["subMenu"]["4"]["subMenu"][current[0]] = {
"name": current[1],
"subMenu": {}
}
}
if (current[2] == 6) {
menuObject["2"][ "subMenu"]["6"]["subMenu"][current[0]] = {
"name": current[1],
"subMenu": {}
}
}
})
console.log(menuObject);
</script>
</body> </html>
JS里的居民们7-对象和数组转换的更多相关文章
- JS里的居民们6-数组排序
编码 var arr = [43, 54, 4, -4, 84, 100, 58, 27, 140]; 将上面数组分别按从大到小以及从小到大进行排序后在console中输出 var arr = ['a ...
- JS里的居民们5-数组(栈)
编码1(栈顶在最右) 练习如何使用数组来实现栈,综合考虑使用数组的 push,pop,shift,unshift操作 基于代码,实现如按钮中描述的功能: 实现如阅读材料中,队列的相关进栈.退栈.获取栈 ...
- JS里的居民们4-数组((堆)队列
编码1(队头在最右) 练习如何使用数组来实现队列,综合考虑使用数组的 push,pop,shift,unshift操作 基于代码,实现如按钮中描述的功能: 实现如阅读材料中,队列的相关入队.出队.获取 ...
- JS中如何判断对象是对象还是数组
JS中如何判断对象是对象还是数组 一.总结 一句话总结:typeof Array.isArray === "function",Array.isArray(value)和Objec ...
- js 中 json.stringfy()将对象、数组转换成字符串
json.stringfy()将对象.数组转换成字符串 var student = new Object(); student.name = "Lanny"; student.ag ...
- JavaScript 系列--JavaScript一些奇淫技巧的实现方法(二)数字格式化 1234567890转1,234,567,890;argruments 对象(类数组)转换成数组
一.前言 之前写了一篇文章:JavaScript 系列--JavaScript一些奇淫技巧的实现方法(一)简短的sleep函数,获取时间戳 https://www.mwcxs.top/page/746 ...
- JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串;JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象
JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串:JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象
- JS里访问纯数字ID对象时出现问题
<p id="1">Hello</p> 例如上面的例子,id为纯数字会出错.此时用js去获取该对象会报错,查找不到该对象. 原因:必须是字母开头,或是下划线 ...
- js中如何返回一个存放对象的数组?
我这边需要返回后台数据的形式是这样的 {[ { ", }, { ", }, { ", }, { ", }, { ", } ]} 页面是通过循环去获取每 ...
随机推荐
- 用IDA辅助分析grub的小技巧
IDA可以辅助我们分析grub的代码,但是bootloader本身只是bin文件,为了让IDA能正确识别分析,我们还需要提供一些基本的参数,比如文件加载到内存的地址等. 图中MBR是加载到0x7C00 ...
- day0202 (%s)
#格式化输出# % s d# name = input('请输入姓名')# age = input('请输入年龄')# height = input('请输入身高')# msg = "我叫% ...
- webform的导出
呃 怎么说呢 我这个是公司大佬写好的 我直接调用 和以前写的百度上面的都不大一样 感觉很Nice 插个眼 说不定以后还得回来参考参考 具体是这样的 你先写好一个模板 就是你要导出的数据应该在Ex ...
- supervisor使用小记
最近使用supervisor部署爬虫,百度了很多,磕磕绊绊自己也算是用起来了,以下是整理的使用情况. 第一步: 下载安装supervisor 使用的ubuntu16.04,直接 sudo apt-ge ...
- java中如何把图片转换成二进制流的代码
在学习期间,把开发过程经常用到的一些代码段做个备份,下边代码内容是关于java中如何把图片转换成二进制流的代码,应该能对各朋友也有用处. public byte[] SetImageToByteArr ...
- Web前端测试要点
Web前端测试维度: 功能性:功能准确性.兼容性 易用性:易学性.易理解性.易操作性.吸引性 可靠性:成熟性.容错性.稳定性.可恢复性.安全性 可移植性:适应性.易安装性.兼容性 可维护性:易分析性. ...
- 使用 Dotfuscator 对代码进行混淆
Dotfuscator 简介 作为一种高级语言,c# 类库很容易被 .NET Reflector 这样的工具反编译.攻击者很容易从代码中找到数据库连接方式,加解密方法等重要信息.使用 dnspy 这样 ...
- 那些H5用到的技术(1)——素材加载
编码环境前言什么时候用到素材加载?loading提示,让用户等待图片的加载音频的加载利用神器PreloadJS总结 编码环境 Sublime Text 3 插件包括: Autoprefixer 自动补 ...
- Ubuntu 18.04 安装 odoo12 源码版
更新和升级 在我们进入安装过程之前,你应该更新和升级Ubuntu.打开终端窗口,发出以下命令: sudo apt-get updatesudo apt-get upgrade 注意:如果内核升级,则必 ...
- java实现HTTP请求的三种方式
目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,Ht ...