ES6 扩展运算符

扩展运算符( spread )是三个点(…)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列
对象中的扩展运算符(…)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中

例如:

const you = ['Gonrge', 'John', 'Thmas']
const old = ['Tom', 'Bom', 'Jelly']

// 整合两个数组
const members1 = you.concat(old); //传统写法
console.log(members1);

// 在整合的数组中添加一个元素,传统写法
let members2 = [];
members2.concat(you);
members2.push('Mary');
members2 = members2.concat(old);
console.log(members2)
// es6 扩展运算符写法如下
let members3 = [...you, 'Mary', ...old]


// 扩展运算符复制数组
const currentMembers1 = [].concat(members3) // 传统写法
const currentMembers2 = [...members3] // 扩展运算符写法

扩展运算符的练习:

将h2中的字符拆分为一个一个,并添加动画效果


// 扩展运算符的运用
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    .heading span {
        cursor: pointer;
        display: inline-block;
        transition: transform 0.25s
    }
    .heading span:hover {
        color: darkblue;
        transform: translateY(-20px) rotate(10deg) scale(2)
    }
</style>
<body>
    <h2 class='heading'>LARAVIST!</h2>
</body>
<script>
const heading = document.querySelector(".heading");

function wrap(word){
    // 将h2字符串拆分为一个一个的字符
    return [...word].map(span => `<span>${span}</span>`).join("")
}

// 替换为拆分后的字符
heading.innerHTML = wrap(heading.textContent)
</script>
</html>

扩展运算符的运用场景

1.将节点列表转换为真数组

const todos = [...document.querySelectorAll("li")];
const names = todos.map(todo => todo.textContent)
console.log(names)

2.扩展对象的属性

const favorites = {
    color:['yellow','red'],
    fruits:['banana','mongo']
}
const shopping = ['milk','sweets',...favorites.fruits] //可使用扩展运算符将fruits扩展到shopping中
console.log(shopping);

3.扩展运算符在函数中的运用

const fruit = ['apple', 'banana', 'pear'];
const newfruit = ['orange', 'mongo'];
// 将newfruit的内容放入fruit里面
fruit.push.apply(fruit, newfruit); //传统方法,将newfruit的内容存入fruit数组中
fruit.push(...newfruit); // es6方法,将newfruit扩展为参数

// 获取指定日期
const dateFields = [2017, 5, 6];
// 传统方法
const date = new Date(dateFields[0], dateFields[1], dateFields[2]);
console.log(date)
// 使用es6方法,使用扩展运算符,不用一个一个的调用字段
const date2 = new Date(...dateFields)
console.log(date2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值