一、join()相关介绍
arr.join(separator ):方法用于把数组中的所有元素放入一个字符串。
元素是通过指定的分隔符进行分隔的。如果省略,则数组元素用逗号分隔。
2.重写思路使用如下:
(1)可以先判断数组中是否存在null或者undefined,若存在对其进行相应的处理。
(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) { //将数组中null和undefined元素变成空字符 this[i] = ""; } // 判断是否传参过来,arguments对象表示函数参数的属性,arguments.length求出函数参数的个数,arguments[i]表示某一个参数 if (arguments.length == 1 && arguments[0] != undefined) { 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()相关介绍
find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。
find() 方法为数组中的每个元素都调用一次函数执行:
当数组中的元素在测试条件时返回 true 时,find() 返回符合条件的元素,之后的值不会再调用执行函数。
如果没有符合条件的元素返回 undefined
注意: find() 对于空数组,函数是不会执行的。
注意: find() 并没有改变数组的原始值。
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>