js中join()和find()方法的重写

 一、join()相关介绍

1. 方法介绍:

arr.join(separator ) : 指定字符串分开数组的每个元素。如果省略,则数组元素用逗号分隔。

 2.重写思路使用如下:

(1)可以先判断数组中是否存在null或者undefined,若存在对其进行相应的处理。

(2)判断函数是否进行传参,用arguments对象查看函数参数的情况。arguments.length用来查看传递参数的个数;arguments[i]是用来查看参数的值。

(3)存在参数,说明需要我们使用传递过来的参数进行分割,不存在参数默认使用 “,” 将数组中的数据分割开来。

3.代码如下:

<script>
    Array.prototype.newJoin = function () {
        var string = "";
        for (var i = 0; i < this.length; i++) {
            // 判断数组中是否存在null或者undefined,若存在将其变成空字符
            if (this[i] === null || this[i] === undefined) {
                this[i] = "";//将数组中null和undefined元素变成空字符
            }
        
            if (arguments.length == 1 && arguments[0] != undefined) {// 判断是否传参过来,arguments对象表示函数参数的属性,arguments.length求出函数参数的个数,arguments[i]表示某一个参数
                string += (i < this.length - 1) ? this[i] + arguments[0] : this[i];

            }
            // else表示不传参的情况,默认我们的join函数是使用“ , ”
            else {
                string += (i < this.length - 1) ? this[i] + "," : this[i];

            }
        }
        return string;
    }
    var arr = [1, 5, 11, 56, 44, 77, 96];
    var arr2 = [1,88,46];
    var str = arr.newJoin();//1, 5, 11, 56, 44, 77, 96
    var str2 = arr2.newJoin("//");//1//88//46
    console.log(str);
    console.log(str2);
</script>

二、find()相关介绍

1.方法介绍:

arr.find() 方法返回通过测试函数的第一个元素的值。如果没有值满足测试函数,则返回 undefined。 

2.重写思路如下:

(1)在重写的find()方法外写一个方法fnB(),该方法是我们查找的依据

(2)根据fnB()在重写的find()方法中进行for循环进行判断是否为想要的结果,如果是则返回该值

3.代码如下:

<script>
    Array.prototype.newFind=function(fun){
if(typeof fun!="function"){//判断参数是否为函数不是的话抛出错误
    throw new TypeError(`${fun}not a function`)
}
for(let i=0;i<this.length;i++){
    // arr.newFind||this指向调用newFind的arr
    if(fun(this[i])){
        return this[i];
    }
}
    }
    var arr=[1,4,15,55,16,33];
    const val=arr.newFind(function(value){
        return value>55;
    })
    console.log(val);//undefined没有大于55的元素
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值