ES5新增数组的一些方法

javascript/jquery

浏览数:206

2019-9-2

1、Array.indexof(value1,value2)

Tip:用于返回某个数组或字符串中规定字符或者字符串的位置。

(1)当Array.indexof(value1);里面只有一个值的时候,表示value1在arr数组里面的我们想要得到查找的值。

 

        var arr = [11,12,13,14,15,16,"hello",17];
        var i = arr.indexOf(13);//表示13在数组中的索引
        var a = arr[i];//在下面我们console.log我们可以看到这个值是否对应数组中一开始我们所想要的索引数
        console.log(i)//2
        console.log(a)//13                

 (2)当Array.indexof(value1,value2);第一个值(value1)表示我们想要在数组中查找的值,第二个值(value2)表示我们

我们想要从第几个位置去查找这个值;

     var arr = [11,12,13,14,13,16,"hello",17];
     var i = arr.indexOf(13,3);//我们是从第三个数开始在这个数组中从左到右中去找这个数。
     var a = arr[i];//13
     console.log(i)//4 从第三个值开始查到到的这个value1的第一个值,前三个数不会识别,直接跳过,进行查找。
     console.log(a)//13

 (3)当Array.indexof()的括号里面不管时一个值还是两个值,若这个值不在我们的这个数组里面返回值都是-1.

      var arr = [11,12,13,14,13,16,"hello",17];
	  var a = arr.indexOf(20);//数组中没有这个值
	  var i = arr.indexOf(21,2);//数组zhong
	  console.log(i)//-1
	  console.log(a)//-1

(4)用Array.indexof()方法中-1特性写一个去重案例

var arr = [1,1,2,"hello","yes","yes",2];
		function Arrayeighting(arr){
			var newArr = [];//定义一个新数组,一会将用于indexof -1特性判断,判断有没有某个值
			for(var i = 0;i<arr.length;i++){//遍历老数组
				if(newArr.indexOf(arr[i])==-1){//判断新创建的数组中有没有老数组中的这个数
					newArr.push(arr[i]);//当indexof返回值为-1就没有这个数,我们就添加这个数
				}
			}		
				return newArr;//返回给函数,一个封装函数,随时都可以去调用。
		}
		console.log(Arrayeighting(arr))// [1, 2, "hello", "yes"]

  

2、Array.forEach()

Tip:循环或遍历数组

          var arr = [11,12,13,14,13,16,"hello",17];
		arr.forEach(function (value,index,self){
			console.log(value,index,self)
		})    
            //value表示数组里面的数值
            //index表示改数值在数组中的位置(索引)
            //self表示的是当前数组。(arr)

 

3、Array.map()

Tip:类似于forEach,会遍历所有的数组,返回当前方法返回值。map不会改变原有数组,而是将函数执行一次之后的返回值组成一个新的数组,返回出来。

demo:将原来的数组扩大1.5倍

          var arr = [11,12,13,14,13,16,17];
		var a = arr.map(function (val){
			return val*=1.5;//不会改变原有数组,并会返回一个新的数组。
		})
			console.log(a)
          

            //value表示数组里面的数值
            //index表示改数值在数组中的位置(索引)
            //self表示的是当前数组。(arr)

  

4、Array.filter ()

都同上一样,筛选数组中的所有项,当条件为tuer的时候才回返回该数据,当条件为false时返回的是一个空数组。

		var arr = [11,12,13,14,13,16,17];
		var a = arr.filter(function (value){
			return value>14;判断的条件
		})
			console.log(a)//[16.17]

  

 5、arr.every()

tip:会遍历整个数组,对数组中的每一项运行都给定一个函数,如果函数的每一项都会返回true,则返回true。当有一个函数的返回值为false,则全都返回false。

var arr = [1,2,3,4,5,6,7,8,9];
		var a = arr.every(function(value,index,arr){//evevy可以传三个值
			console.log("value"+":"+value)//当返回值为false,则会打印数组中第一个数value:1
			return value>2;//判断的条件,这个数是否大于2?
		})
		console.log(a)//false
            //value表示数组里面的数值
            //index表示改数值在数组中的位置(索引)
            //self表示的是当前数组。(arr)

  

		var arr = [1,2,3,4,5,6,7,8,9];


var a = arr.every(function(value,index,arr){ console.log("value"+":"+value)//当返回值为true,则会打印数组中所有的数如👉 return value>0;//判断条件 }) console.log(a)//true








 6、some()

tip:当有一个返回值为true则返回值都为true,当一个true都没有的时候,才回返回false。

var arr = [1,2,3,4,5,6,7,8,9];
		var a = arr.some(function(value,index,arr){
			console.log("value"+":"+value)//value:1 value:2 value:3
              //当他的返回值不管是true还是false。在retrun value>num;上面都会返回arr[0]到arr[num]的值。
return value>2;//判断的条件 }) console.log(a)//true
          //只要当返回值为false的时候,在retrun上面就会返回整个数组。
            //value表示数组里面的数值
            //index表示改数值在数组中的位置(索引)
            //self表示的是当前数组。(arr)

 7、reduce()

tip:是数组的归并方法,与forEach()、map()、filter()等迭代方法一样都会对数组每一项进行遍历,但是reduce() 可同时将前面数组项遍历产生的结果与当前遍历项进行运算,这一点是其他迭代方法无法企及的。

下面以求数组中所有数的的和做案例

	var arr = [8,45,78,54,21,5];
	var sum = arr.reduce(function(prev,cur,index,arr){
		console.log(prev,cur,index)
            return prev + cur;

     }/*,prev*/) console.log(sum)//数组中各项相加的和 sum = 211;

     //prev:有默认值为默认值,没有默认值为数组中的第一个项。第二位就就是从左到右的和,有字符串则字符串的拼接。prev值只有在一开始的时候才能够被设定,在函数的最后加上一个,prev。
     //cur:为prev数值的后面的一位数,如果有默认值cur为数组中第一个项。
     //index:为数组中cur的索引
     //arr:为是你选中的数组

我们来看另外一个案例:
    数组中所有的项的乘积:
var arr = [8,45,78,54,21,5];
	var product = arr.reduce(function(prev,cur,index,arr){
		console.log(prev,cur,index)
		return prev * cur;
	}/*,prev*/)
	console.log(product)//数组中各项相加的乘积 159213600

 8、reduceRight()

tip:它同上所说reduce方法一样,reduce()方法是一个从左到右的归并的方法,顾名思义reduceRigth()就是从右到左的一个归并的方法。方法和reduce()方法一样。将数组倒叙排列并遍历。

总结:reduce和reduceRight方法(归并)跟我们以前所学的数组方法(迭代)都不一样,最大的区别是可以将以前遍历的结果,与当前遍历的结果进行运算,这一点是其他迭代方法无法企及的。

作者:土土皮皮