开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第22天,点击查看活动详情
1、解构对象
数组中可以存储任意类型的数据,也可以存数组,
如果一个数组中的元素还是数组,则这个数组我们就称为是二维数组
解构对象,方便两数交换数值;可以反向赋值对象,数组
可以在解构的同时,进行声明
<script>
const arr = ["孙悟空", "猪八戒", "沙和尚"]
let a,
b,
c
// a = arr[0]
// b = arr[1]
// c = arr[2]
;
[a,b,c] = arr;//解构赋值
let [d,e,f,g] = ['唐僧','白骨精','蜘蛛精','玉兔精']//声明同时解构
// ;[d,e,f,g] = [1,2,3]
// ;[d,e,f=77,g=10] = [1,2,3]
;[d,e,f=43,g=g] = [1,2,3]//直接这样的话,会显得g未定义
console.log(d,e,f,g)
let [n1,n2,...n3] = [4,5,6,7] // 解构数组时,可以使用...来设置多余的元素
function fn(){
return ['二郎神','猪八戒']
}
let [name1,name2] = fn();
console.log(name1,name2)
//可以通过解构赋值来快速交换两个变量的值
let a1 = 10
let a2 = 20
//以前的方法,需要一个中间值来交换两数值
// let temp = a1
// a1 = a2
// a2 = temp
;[a1,a2] = [a2,a1]//[20,10]
const arr2 = ['孙悟空','猪八戒']
;[arr2[0],arr2[1]] = [arr2[1],arr2[0]]
console.log(arr2)
const arr3 = [['孙悟空',18,'男'],['猪八戒',45,'男']]
for(let stu of arr3){
for(let v of stu){
console.log(v)
}
}
let [[name,age,gender],obj] = arr3
console.log(name,age,gender)
console.log(obj)
</script>
2、对象的解构
<script>
const obj = {name:'孙悟空',age:18,gender:'男'}
// let {name,age,gender} = obj // 声明变量同时解构对象
let name,age,gender
;({name,age,gender} = obj)//如果不加小括号的话,会被JS认为是代码块,但是加了小括号之后还需要添加分号,防止JS误认
let {address} = obj;//没有的属性返回undefined
console.log(name,age,gender,address)
let {name: a,age: b,gender: c,address: d='花果山'} = obj
console.log(a,b,c,d)
</script>
3、对象的序列化
对象的序列化
-
JS中的对象使用时都是存在于计算机的内存中的
- 序列化指将对象转换为一个可以存储的格式 在JS中对象的序列化通常是一个对象转换为字符串(JSON字符串)
- 序列化的用途(对象转换为字符串有什么用):
- 对象转换为字符串后,可以将字符串在不同的语言之间进行传递 甚至人可以直接对字符串进行读写操作,使得JS对象可以不同的语言之间传递
- 用途: 1. 作为数据交换的格式 2. 用来编写配置文字
- 如何进行序列化:
JSON
-
在JS中有一个工具类 JSON (JavaScript Object Notation) JS对象表示法
-
JS对象序列化后会转换为一个字符串,这个字符串我们称其为JSON字符串
-
也可以手动的编写JSON字符串,在很多程序的配置文件就是使用JSON编写的
-
编写JSON的注意事项:
-
JSON字符串有两种类型:
JSON对象 {} JSON数组 []
-
JSON字符串的属性名必须使用双引号引起来
-
JSON中可以使用的属性值(元素)
- 数字(Number)
- 字符串(String) 必须使用双引号
- 布尔值(Boolean)
- 空值(Null)
- 对象(Object {})
- 数组(Array [])
-
JSON的格式和JS对象的格式基本上一致的, 注意:JSON字符串如果属性是最后一个,则不要再加,
-
-
JSON.stringify()
可以将一个对象转换成JSON字符串
JSON.parse()
可以将一个JSON格式的字符串转换为JS对象
<script>
const obj = {
name: '孙悟空',
age: 13,
}
//将obj转换成JSON字符串
const str = JSON.stringify(obj)//JSON.stringify() 可以将一个对象转换成JSON字符串
const obj2 = JSON.parse(str) //JSON.parse() 可以将一个JSON格式的字符串转换为JS对象
// console.log(obj)
// console.log(str) // {"name":"孙悟空","age":18}
// console.log(obj2)
const str2 = `{'name': '孙悟空','age': '13'}`
const str3 = '{}'
const str4 = '["hello",true,[]]'
</script>