ES6_取值

取值有更优雅的方式吗
在ES里面,我们经常需要取数组的某个值,或者是对象里面的某个属性
数组可能是通过下标去取值,对象通过属性去取值
那么取值有更优雅的方式吗

ES6 解构赋值

const course = {
  name: 'es6',
  price: 50
}
取值:
const name = course.name
const price = course.price

解构赋值
const {name, price } = course  // 解构赋值等号左边和等号右边对应的结构是完全一样的
console.log(name, price)

在这里插入图片描述
这是对象的解构赋值的方法

const courseArr = ['es6', 'es7', 'es8']
const a = courseArr[0]
const b = courseArr[1]
const c = courseArr[2]
解构赋值:
const [a,b,c] = courseArr;
console.log(a, b, c)

在这里插入图片描述
复杂的解构赋值:

const course = {
  name: 'es6',
  price: 50,
  teacher: {
     name: 'xiecheng',
     age: 34
  }
}

// 如果只取值name 和price没问题
如果想取teacher
const {name, price,teacher } = course
console.log(name, price, teacher)

在这里插入图片描述
如果想取teacher里面的name和age属性呢
等号左右两边结构完全一样

const course = {
  name1: 'es6',
  price: 50,
  teacher: {
     name: 'xiecheng',
     age: 34
  }
}
const {name1, price,teacher: {name, age} } = course
console.log(name1, price, name, age)

在这里插入图片描述
如果属性name和teacher里面的属性同名,会出现什么情况

const course = {
  name: 'es6',
  price: 50,
  teacher: {
     name: 'xiecheng',
     age: 34
  }
}
const {name, price,teacher: {name, age} } = course
console.log(name, price, name, age) // 两个name

在这里插入图片描述
name 已经被定义两次, const 是不能重复的
遇到这种情况,我们可以给我们的属性起一个别名,如何去取

const {
name: courseName,  // 别名
 price,
 teacher: {name, age} 
 } = course
console.log(courseName, price, name, age) // 两个name

在这里插入图片描述
解构赋值是可以给属性取名的

在项目中准确的使用解构赋值

const sum = (arr) => {
   let result = 0;
   for(let i = 0; i < arr.length; i++) {
   result += arr[i]
   }
   console.log(result)
}
sum([1, 2, 3])     // 结果是6

ES6写法

解构赋值应用:函数参数
const sum = ([a, b, c ]) => {
   console.log(a + b + c)
}
sum([1, 2, 3])     // 结果是6
// 可以默认属性,默认属性值可以不传
const foo = ({name, age, school = 'XX 学校'}) => {  //设置默认值
console.log(name, age,school )
}
foo({
  name: '张三',
  age: 20
})
解构赋值应用:接收返回值
const foo = () => {
  return {
    name: '张三',
    age: 20
  }
}
const {name, age} = foo()
conosle.log(name, age)   // 张三  20
解构赋值应用:交换两个变量的值
let  a = 1
let b = 2
[b, a] = [a, b]
console.log(a, b) // 2, 1
//解构赋值应用: json应用
const json = '{"name": es", "price": "500"}'
const obj = JSON.parse(json)
console.log(obj)  // {"name": es", "price": "500"}

解构赋值
const {name, price} = JSON.parse(json)
解构赋值应用:Ajax请求应用
先在项目中引用axios
 axios.get('./data.json').then(function (res) {
   console.log(res)
})
// es6优化
 axios.get('./data.json').then(res => {
   console.log(res.data)
})
====
 axios.get('./data.json').then(({data})=> {
   console.log(data)
})
===
 axios.get('./data.json').then(({data: {name, type}})=> {
   console.log(name, type)
})

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值