一、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>