// push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。// 末尾添加,返回的是长度,会改变原数组。Array.prototype.myPush=function(){for(var i =0; i < arguments.length; i++){this[this.length]= arguments[i]}returnthis.length;}let a =[1,2,3]let b = a.myPush(4,5)
console.log(a);//[1,2,3,4,5]
// 过滤掉满足条件的元素,返回一个新数组Array.prototype.myFilter=function(fn){let newArr =[]for(let i =0; i <this.length; i++){if(fn(this[i])){
newArr.push(this[i])}}return newArr
}let a =['胡歌','刘德华','张学友','郭富城']let b = a.myFilter((item)=>item !=='胡歌')
console.log(b);//[ '刘德华', '张学友', '郭富城' ]
10.some
// 该函数传入一个函数,返回一个条件,只要有一个元素满足条件就返回trueArray.prototype.mySome=function(fn){let num =[]for(let i =0; i <this.length; i++){if(fn(this[i])){
num.push(this[i])}}if(num.length >0){returntrue}else{returnfalse}}let a =[1,2,3,4,5,6,7,8,9]let b = a.mySome((item)=> item <5)
console.log(b);//true
11.every
// 接收一个函数,函数返回一个条件,数组全部返回ture,则该函数九返回tureArray.prototype.myEvery=function(fn){let num =[]for(let i =0; i <this.length; i++){// 满足条件的个数if(fn(this[i])){
num.push(this[i])}}// 如果满足条件的元素与原数组的元素一样,返回ture,否则返回falseif(num.length ==this.length){returntrue}else{returnfalse}}let a =[1,2,3,4,5,6,7]let b = a.myEvery((item)=>{return item <8})
console.log(b);
12.concat
// concat() 方法用于连接两个或多个数组。// 该方法不会改变现有的数组,仅会返回被连接数组的一个副本。Array.prototype.myConcat=function(oldArr){let newArr =thisfor(let i =0; i < oldArr.length; i++){
newArr.push(oldArr[i])}return newArr
}let a =[1,2,3]let b =[4,5,6]let c = a.myConcat(b)
console.log(c);//[1,2,3,4,5,6]
13.join
// join() 方法用于把数组中的所有元素放入一个字符串。// 元素是通过指定的分隔符进行分隔的,默认使用’,'号分割,不改变原数组Array.prototype.myJoin=function(){let string =''for(let i =0; i <this.length; i++){
string +=this[i]}return string
}let a =[1,2,3,4,5,6]let b = a.myJoin()
console.log(b);//'123456'
14.indexOf
// indexOf(查找的元素,从第几个元素开始) 方法可返回数组或字符串中某个指定的元素位置。// 该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start参数时)。如果找到一个 item,则返回 item 的第一次出现的位置。// 如果在数组中没找到指定元素则返回 -1。Array.prototype.myIndexOf=function(){for(let i = arguments[1]; i <this.length; i++){if(this[i]== arguments[0]){return i
}}return-1}let a =[1,2,3,4,5,6]let b = a.myIndexOf(4,3)
console.log(b);//3
15.lastIndexOf
// indexOf(查找的元素,从第几个元素开始) 方法可返回数组或字符串中某个指定的元素位置。// 该方法将从尾到头地检索数组,看它是否含有对应的元素。如果找到一个 item,则返回 item 的第一次出现的位置。// 如果在数组中没找到指定元素则返回 -1。Array.prototype.myIndexOf=function(){for(let i = arguments[1]; i >=0; i--){if(this[i]== arguments[0]){return i
}}return-1}let a =[1,2,3,4,5,6]let b = a.myIndexOf(2,3)
console.log(b);//3
16.reserve
// reverse() 方法用于颠倒数组中元素的顺序。返回的是颠倒后的数组,会改变原数组Array.prototype.myReverse=function(){let newArr =[]for(let i =this.length -1; i >=0; i--){
newArr.push(this[i])}return newArr
}let a =[1,2,3,4,5,6]let b = a.myReverse()
console.log(b);//[ 6, 5, 4, 3, 2, 1 ]
17.sort
// 返回一个新数组,对元素进行排序,这里简单的对数字进行一下排序,主要是排序思想(冒泡排序)Array.prototype.mySort=function(fn){// 升序if(fn(2,1)==1){// 第一轮遍历for(let i =0; i <this.length; i++){// 第二轮遍历for(let j =0; j <this.length; j++){// 第i个元素与下一个元素进行对比,交换位置let tem
if(this[j]>this[j+1]){// 升序
tem =this[j]this[j]=this[j+1]this[j+1]=tem
}}}// 降序}else{// 第一轮遍历for(let i =this.length -1; i >=0; i--){// 第二轮遍历for(let j =this.length -1; j >=0; j--){// 第i个元素与下一个元素进行对比,交换位置let tem
if(this[j]>this[j-1]){// 升序
tem =this[j]this[j]=this[j-1]this[j-1]=tem
}}}}returnthis}let a =[2,6,1,3,5,0]// 升序let b = a.mySort((a,b)=> a-b)// 降序// let c = a.mySort((a,b)=> b-a)
console.log(b);// console.log(c);
18.find
// find() 方法是 JavaScript 中用于在数组中查找特定条件的第一个元素,如果找到一个元素使得回调函数返回true,// 则该元素作为结果返回;如果没有找到这样的元素,则返回undefined,该函数不会修改原始数组。Array.prototype.myFind=function(fn){for(let i =0; i <this.length; i++){if(fn(this[i])){returnthis[i]}}}let a =[{id:1,name:'刘德华'},{id:2,name:'胡歌'},{id:3,name:'刘华强'}]let b = a.myFind((item)=> item.id ==2)
console.log(b);// {id: 2, name: '胡歌'}