11、indexOf //在数组中查找元素,并且返回该元素的下标,如果没有找到返回-1
var arr=[1,2,5,3,4,2,3,7,2,3,5];
var index=arr.indexOf(5);//返回下标
var index=arr.indexOf(3,4);//从下标为4开始查找
var index=0;
do{
index=arr.indexOf(3,index);
console.log(index);
}while(++index>0);//找到为3的所有下标
var arr=[1,3,3,6,8,2,3,5,6,3,7,9,8,3,6,7,3,8,9];
var arr1=[];
for(var i=0;i<arr.length;i++){
if(arr1.indexOf(arr[i])<0) arr1.push(arr[i]);
}
console.log(arr1);//把没有重复的数找到
//重构!
function indexOf(arr,search,index){
if(index===undefined) index=0;
for(var i=index;i<arr.length;i++){
if(arr[i]===search) return i;
}
return -1;
}
12、lastIndexOf //从后向前查找元素
//lastIndexOf(要查找的元素,从什么位置开始查找);
var arr=[1,3,3,6,8,2,3,5,6,3,7,9,8,3,6,7,3,8,9];
var index=arr.lastIndexOf(3);
console.log(index);
13、fill //填充
//fill(要填充的值,从什么位置开始,到什么位置之前结束);
var arr=[1,,,7];
arr.fill(5,1,3);
console.log(arr);
//fill只能用于有长度的数组,如果不给开始位置和结束位置,就会把数组全部填充覆盖
//用这种方式填充对象,就会造成填充同一个引用地址的对象
14、forEach //遍历数组,可以获取使用元素和下标,自动过滤空元素,空元素不遍历
//比for in来说,不会遍历到数组的属性
//比for来说,不会遍历到空元素
//有缺陷,函数中this指向会被改变
arr.forEach(function(item,index,arr){
console.log(item,index,arr);
arr[index]=item+10;
});
console.log(arr);
//桥接模式是设计模式的一种
//桥接模式: 功能与实现分离,使用函数作为桥接方式,功能带入
function forEach(arr,fn){
for(var i=0;i<arr.length;i++){
if(i in arr) fn(arr[i],i,arr);
}
}
var arr=[2,3,4,,7,5,8];
forEach(arr,function(item,index,arr){
console.log(item,index,arr);
})
forEach(arr,fn2);
function fn2(item,index,arr){}
15、map //遍历数组,并且使用return返回元素,这些被返回的元素会被放在一个新数组中