温故而知新之- Javascript 数组类型 (展开语法、解构赋值)

举报
余人杰 发表于 2020/08/10 00:33:49 2020/08/10
【摘要】 尽量采取短文章形式进行温故知识,而不长篇大论的介绍,好让大家吸收。在平时的学习或者项目中,虽然我们可以运用Javascript数组的各种方法来完成我们各种需求。然而还有两个知识点,可以提高我们操作数组的效率,那就是 展开语法、解构赋值。

展开语法


展开语法可以用于哪些操作?合并数组、函数参数、节点转换等等。

合并数组

让我们来回顾一下,如果我们想合并数组,可以使用什么方法?没错,contact(), 但我们现在要讲的展开语法要比contact()更简单。

何为展开语法?就是使用 ... 可以将数组展开为多个值。

let info = ['hw91364016', '余人杰'];
let msg = ['学习Javascript', ...info];
console.log(msg); // ["学习Javascript", "hw91364016", "余人杰"]

函数参数

但我们不确定函数参数的数量时,可以用展开语法来解决这个问题。

function test(...args) {
  console.log(args); // ["hw91364016", 8, 9, "余人杰"]
}
test('hw91364016', 8, 9, "余人杰");

这样一来,任意数量的参数,都可以使用展开语法,进而代替arguments。

当然,也可以接收部分参数

function test(id, ...args) {
  console.log(id, args); // hw91364016 (3) [8, 9, "余人杰"]
}
test('hw91364016', 8, 9, "余人杰");


节点转换

可以使用展开语法把dom节点转换为数组。

<body>
    <button info="余人杰">点击</button>
    <button info="hw91364016">点击</button>
</body>

<script>
    let btns = document.querySelectorAll('button');
    btns.map((item) => {
        console.log(item); //TypeError: btns.map is not a function
    })
</script>

上面栗子中,querySelectorAll获取到的不是数组,而是节点列表,所以不能使用map之类的数据方法。

我们可以使用展开语法进行转换

<body>
    <button info="余人杰">点击</button>
    <button info="hw91364016">点击</button>
</body>

<script>
    let btns = document.querySelectorAll('button');
    [...btns].map((btn) => {
         btn.addEventListener("click", function() {
              this.classList.toggle("show");
         }); 
    })
</script>


解构赋值


何为解构?可以简单理解为分解一个数据的结构,是一种更简洁的赋值特性。


使用方式

let [name, id] = ['余人杰', 'hw91364016'];
console.log(id); // 'hw91364016'


还可以使用剩余结构来接收剩余参数

let [name, ...info] = ['余人杰', 'hw91364016', '学无止境'];
console.log(info); // ["hw91364016", "学无止境"]


字符串解构

const [...info] = "余人杰";
console.log(info); // ["余", "人", "杰"]


赋值部分变量

let [,id]=['余人杰','hw91364016'];
console.log(id); // 'hw91364016'


展开语法获取多个值

let [name, ...info] = ['余人杰', 'hw91364016', '学无止境'];
console.log(name, info); // 余人杰 (2) ["hw91364016", "学无止境"]


为变量设置默认值

let [name, id = 'hw91364016'] = ['余人杰'];
console.log(id); // 'hw91364016'


数组参数

function info([name, id]) {
	console.log(name, id); // 余人杰 hw91364016
}
info(['余人杰', 'hw91364016']);


心里话:希望每次复习,对大家也有帮助,即使细微,我也进我努力,能把知识点总结得简洁易懂,容易吸收,学无止境,有你我同行,加油。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。