原生JavaScript实现fill和join方法

本文详细介绍了JavaScript中Array.prototype.fill和Array.prototype.join方法的实现与应用。fill方法用于填充数组,接受一个值和可选的开始及结束索引,可以处理负数索引,并且会直接修改原数组。join方法将数组转换为字符串,元素间由指定分隔符连接,默认为逗号。这两个方法都是JavaScript数组操作的重要组成部分。
摘要由CSDN通过智能技术生成

今天实现的fill和join都相对比较简单,只要注意一下细节和边界条件就可以了

// fill 方法接受三个参数 value, start 以及 end. start 和 end 参数是可选的, 其默认值分别为 0 和 this 对象的 length 属性值。

// 如果 start 是个负数, 则开始索引会被自动计算成为 length+start, 其中 length 是 this 对象的 length 属性值。如果 end 是个负数, 则结束索引会被自动计算成为 length+end。

// fill 方法故意被设计成通用方法, 该方法不要求 this 是数组对象。

// fill 方法是个可变方法, 它会改变调用它的 this 对象本身, 然后返回它, 而并不是返回一个副本。

// 当一个对象被传递给 fill方法的时候, 填充数组的是这个对象的引用。
Array.prototype.my_fill = function(value, start = 0, end) {
    if (this == undefined) {
        throw TypeError("this is null or undefined");
    }
    end = end || this.length;
    if (start < 0) { start = this.length + start }
    //注意fill不会改变数组的长度
    if (end > this.length) { end = this.length }
    if (end < 0) { end = this.length + end }
    for (let i = start; i < end; i++) {
        this[i] = value;
    }
    return this //直接返回,会改变对象
}
let arr = ['a', 'a', 'a'];
console.log(arr.my_fill([1, 2, 3], 4))
    // join() 方法将数组作为字符串返回。

// 元素将由指定的分隔符分隔。默认分隔符是逗号 (,)
Array.prototype.my_join = function(value = ',') {
    if (this == undefined) {
        throw TypeError("this is null or undefined");
    }
    let str = "";
    for (let i = 0; i < this.length; i++) {
        str += this[i];
        if (i != this.length - 1) { str += value; }
        //更优质的版本:使用模板字符串
        // str = i === 0 ? `${str}${this[i]}` : `${str}${value}${this[i]}`
    }
    return str;
}
console.log(arr.my_join(""))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值