Day 13 - Spread Operator & Rest Operator

在介绍 Spread Operator 和 Rest Operator 之前,先来介绍阵列相加的方法 - Concat。
如果阵列用加法的话会变成字串相加的形式。
例如:

let friends1 = ["Mike","John","Daniel"];
let friends2 = ["May","Lisa"];
console.log(friends1 + friends2); // Mike,John,DanielMay,Lisa
console.log(typeof (friends1 + friends2)); // string(用 "+" 来相加阵列会变成字串)

所以我们要用 concat 这个方法,才能让阵列和阵列加起来形成一个新的阵列。
要特别注意的是 concat 是有先後顺序的,例如下面的程序码,如果想要让 friends1 优先显示在相加後的新的阵列中,则 friends1 就要放在 concat 前面(用 friends1 去 concat friends2),反之。

let friends = friends1.concat(friends2);
console.log(friends); // ["Mike","John","Daniel","May","Lisa"]
console.log(typeof friends); // object(别忘了阵列是物件之一)
friends = friends2.concat(friends1);
console.log(friends); // ["May","Lisa","Mike","John","Daniel"]

Spread operator

前面介绍过将阵列相加的方法 concat ,这边要用另一种更简单的方法 : Spread operator,用 ... 将阵列展开
例如:

let friends1 = ["Mike","John","Daniel"];
let friends2 = ["May","Lisa"];
let friends = [...friends1,...friends2];
console.log(friends); // ["Mike","John","Daniel","May","Lisa"]

Rest operators & Rest Parameters

如果我们想要随意的在 function 里面加入参数,可以使用这种方法,在定义的 function 参数前面加 ... ,执行 function 时加入的多个参数就会变成一笔阵列资料
例如:

function check(...numbers){
  console.log(numbers);
}
check(1,2,3,4,5,6,7,8);
// [1,2,3,4,5,6,7,8]

再举个例子 - 找最大数的方式,原本的方式是在 function 的参数放入阵列,程序码如下:

function findBiggest(arr) {
    if(arr.length === 0){
        return undefined;
    }
    let biggestNumber = -100000;
    for(let i = 0;i < arr.length;i++){
        if(arr[i] > biggestNumber){
            biggestNumber = arr[i];
        }
    }
  return biggestNumber;
}
console.log(findBiggest([3,67,43,95])); // 95

学会使用 ... 後我们把它拿来改成这种方式,在 function 内输入多个参数让它自己去比大小,而不必特别写一个阵列储存数字了(当然也可以用 Math.max() 这个方法)。

function findBiggest(...arr) {
    if(arr.length === 0){
        return undefined;
    }
    let biggestNumber = -100000;
    for(let i = 0;i < arr.length;i++){
        if(arr[i] > biggestNumber){
            biggestNumber = arr[i];
        }
    }
  return biggestNumber;
}
console.log(findBiggest(3,67,43,95,100)); // 100
console.log(Math.max(3,67,43,95,100)); // 100

<<:  【LeetCode】DFS

>>:  Day 14 读 Go Concurrency Patterns - Rob Pike I

学习javascript前...HTML2

有些功能性的标签不需要内文,写法如下: < b >粗体字< /b > b 标...

使用 Google 表单快速建立实名制出入场所登记资料 COVID-19

免接触 免拿笔签名 流程 人进场 --> 手机扫描 QR --> 填写资料 -->...

[Day 30]完赛总结

三十天很快就过去了,已经很有经验的资安高手和大神,出版书籍、发表文章、甚至四处宣讲分享技术,都可以快...

我的JavaScript日常- 第 31 天不是结束,反而是开始

昨天总算完成了「我的JavaScript日常」的最後一篇文章,很高兴自己成功挑战了 30 天的研究与...

Day22 - 【概念篇】Keycloak使用基本概念 - 前导

本系列文之後也会置於个人网站 在这之前,都是先请大家照着做,没有好好说明关於Keycloak的使用...