小生愛

    
    

	        // isArray : 判断是否是数组
	        var arr1 = new Array();
	        var date = new Date();
	        // 输出true 
	        console.log('是数组', Array.isArray(arr1));
	        // 输出flase
	        console.log('不是数组', Array.isArray(date));
	        



	        var arr2 = new Array(1, 2, 3, 3, 2, 1);
	        // indexOf : 正向查找元素的位置  
	        // 输出 1
	        console.log('正向查找到的位置 : ', arr2.indexOf(2));
	        // lastIndexOf: 反向查找元素的位置
	        // 输出 4
	        console.log('反向查找到的位置 : ', arr2.lastIndexOf(2));




	        var arr3 = new Array('a', 'b', 'c', 'd');
	        // forEach : 遍历数组 参数是一个回调函数 有3个参数 当前元素 元素索引 整个数组 
	        // 必须 变量.forEach
	        arr3.forEach(function (e, i, arr){
	          console.log('当前元素 : ', e);
	          console.log('数组索引 : ', i);
	          console.log('整个数组 : ', arr);
	        });




	        var arr4 = new Array(1,2,3,4,5,6);
	        // every : 回调函数有一个返回false时终止执行 every返回false
	        var value1 = arr4.every(function (e, i, arr){
	          console.log(e, ' - ', i);
	          return e < 5;
	        });
	        // 输出false
	        console.log(value1);


	        // some : 回调函数有一个返回true时终止执行 some返回true
	        var value2 = arr4.some(function (e, i, arr){
	          console.log(e, ' - ', i);
	          return e > 5;
	        });
	        // 输出true
	        console.log(value2);




	        var arr5 = new Array(1, 2, 3, 4, 5, 6);
	        // map : 回调函数返回值组成一个新数组返回 新数组索引结构和原数组一致 
	        // 必须 变量.map
	        // 原数组不变
	        var value3 = arr5.map(function (e, i, arr){
	          return e * e;
	        });
	        // 输出 [1, 4, 9, 16, 25, 36]
	        console.log('新数组 : ', value3);
	        // 输出[1, 2, 3, 4, 5, 6]
	        console.log('原数组 : ', arr5);




		// filter map forEach 都可以接收第2个参数 用来绑定this
		let obj = {}
		let arr = ['a', 'b']
		arr.filter(function (x) {
		    // this 代表obj对象
		    this.x = x
		}, obj)




	        var arr6 = new Array(1, 2, 3, 4, 5, 6);
	        // filter : 返回数组的一个子集 回调函数用于逻辑判断是否返回 返回true则把当前元素
	        //      加入到返回数组中false则不加
	        var value4 = arr6.filter(function (e, i, arr){
	          return e%2 == 0;
	        });
	        console.log('新数组 : ', value4);




	        var arr7 = new Array(1, 2, 3, 4, 5, 6);
	        // reduce : 从最小索引开始 每次将遍历2个值求和返回给下一次遍历 最终输出总值
	        // 10 : 初始值
	        var value5 = arr7.reduce(function (v1, v2){
	          return v1 + v2;
	        }, 10);

	        // 输出 31
	        console.log('数组的总和是 : ', value5);


	        // reduceRight : 从最大索引开始 每次遍历2个值相减 
	        // 100 : 初始值
	        var value6 = arr7.reduceRight(function (v1, v2){
	          return v1 - v2;
	        }, 100);

	        // 输出 79
	        console.log(value6);