手写数组方法(十一):join

276 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第19天,点击查看活动详情

今天我们来学习下数组的join方法。

join 方法将一个数组的所有元素连接成一个字符串并返回这个字符串。如果数组只有一个元素,那么将返回该元素而不使用分隔符。

语法

arr.join([separator])

参数

  • separator 可选

指定一个字符串来分隔数组的每个元素。如果需要,将分隔符转换为字符串(因为你可能传的不是字符串)。如果缺省该值,数组元素用逗号(,)分隔。如果separator是空字符串 (""),则所有元素之间都没有任何字符。

返回值

一个所有数组元素连接的字符串。如果 arr.length为 0,则返回空字符串。

使用

不传参

let list = [1,2,3];
list.join();

image.png

参数为字符串

let list = [1,2,3];
list.join('+');

image.png

参数为空字符串

let list = [1,2,3];
list.join('');

image.png

参数不是字符串类型

布尔型

let list = [1,2,3];
list.join(true);

image.png

数字

let list = [1,2,3];
list.join(4);

image.png

NaN

let list = [1,2,3];
list.join(NaN);

image.png

对象

image.png

根据以上例子,可以看到如果参数不是字符串,会调用toString方法先将其转化为字符串。

手写

根据以上特性,我们不难写出以下代码

Array.prototype._join = function(...args) {
    let separator;
    let res = '';
    if(args.length === 0){
        separator = ',';
    } else {
        separator = args[0].toString();
    }
    for(let i = 0; i < this.length; i++){
        res += this[i];
        if(i === this.length - 1) return res;
        res += separator;
    }
}

以上逻辑总结一下,不传参,分隔符默认, 否则转为字符串(原本就是字符串调用toString方法仍然是字符串,为了简化代码直接统一处理了)。然后将数组中的每个元素与分隔符拼接起来(最后一个的末尾不加分隔符)。是不是异常简单~

结语

今天关于数组join的介绍就讲到这里,关注我获取更多有关数组方法的讲解,后续会持续更新。我是末世未然,一个爱折腾的新晋奶爸,祝好