forEach( )与map( )
1 var arr = [5,32,5,7,2,3] 2 // forEach的时候传递一个函数进来,我们只需要把他写进来,不需要调用 3 // 这个函数就会被forEach去调用 4 // arr有多少个元素,函数就会被调用多少遍 5 // 每一次调用的时候都会传递两个实参过来 6 // 所以我们要写两个形参,第一个形参是值,第二个形参是索引 7 8 // arr.forEach(function (item, index) { 9 // console.log(item, index) 10 // }) 11 12 // 每一次遍历的时候返回一个值,这些值会放进一个新的数组里 13 // map可以用来修改数据,但是不会修改arr本身,而是得到一个新的数组 14 var arr1 = arr.map(function (item, index) { 15 console.log(item, index) 16 return item * (1+0.3) 17 }) 18 console.log(arr1) 19 20 // 只是把索引为奇数的变成1.3倍 21 // 偶数的也得return本身 22 // 每一次都要写返回值,否则新的数组里会有undefined 23 var arr2 = arr.map(function (item, index) { 24 if (index%2) { 25 return item * (1+0.3) 26 } 27 return item 28 }) 29 console.log(arr2)
filter()
1 var arr = [5,7,3,7,3,2] 2 // 过滤 3 // 每一次遍历的时候都要返回一个条件(布尔值) 4 // 当这个条件得结果为true的时候,当前值就会被保留,否则就被过滤掉 5 // 最终用一个新的数组来存结果 6 7 // 如果不写return,默认返回值是undefined,会隐式转换为false,相当于每次都返回的false 8 var arr1 = arr.filter(function (item, index) { 9 console.log(item, index) 10 return item > 4 11 }) 12 console.log(arr1)
some()和every()
1 var arr = [5,2,5,2,6,7] 2 // some的最终结果是一个布尔值 3 // 每一次遍历的时候返回一个条件 4 // 只要在遍历过程中有一条数据满足条件(在所有的返回值当中只要有一个true) 5 // 整个some的结果就是true 6 // 在遍历的过程中只要发现了一个true就停止遍历 7 // var is = arr.some(function (item, index) { 8 // console.log(item, index) 9 // return item > 10 10 // }) 11 // console.log(is) 12 13 // every 必须每一次遍历返回的条件都是true,结果才为true,否则就是false 14 // 只要任意一个不满足条件,遍历就结束,最终得到false 15 var is = arr.every(function (item, index) { 16 console.log(item, index) 17 return item % 2 === 0 18 }) 19 console.log(is)
reduce()
1 var arr = [3,5,2,6,2] 2 // current 3 // 计算arr所有元素的累加和 4 // 第一次的res是arr[0],以后的res是上一次的返回值 5 // var sum = arr.reduce(function (res, curr, index) { 6 // // index是curr的索引,默认从1开始,但是一般用的不多 7 // console.log(res, curr, index) 8 // return res + curr 9 // }) 10 // console.log(sum) 11 12 13 // reduce有两个参数,第一个参数是函数,第二个参数可选的默认值 14 // 在后面写上一个默认值,循环次数就跟数组长度相等,res默认值就是1,curr从arr[0]开始 15 var sum = arr.reduce(function (res, curr, index) { 16 console.log(res, curr, index) 17 // res *= curr 18 // return res 19 return res *curr 20 }, 1) 21 console.log(sum) 22 23 //二维数组归并为一维数组 24 var arr = [ 25 [1,2,3], 26 [4,5,6], 27 [7,8,9] 28 ] 29 30 var arr1 = arr.reduce(function (res, curr) { 31 return res.concat(curr) 32 }, []) 33 34 console.log(arr1) 35 36 37 var arr = [ 38 [1,2,3], 39 [4,5,6], 40 [7,8,9] 41 ] 42 43 // reduce是从左往右归并,reduceRight从右往左 44 // reduceRight的语法和reduce是完全一样的 45 var arr1 = arr.reduceRight(function (res, curr) { 46 return res.concat(curr) 47 }, []) 48 49 console.log(arr1) // [7,8,9,4,5,6,1,2,3]