数组(array-api)二

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]

猜你喜欢

转载自www.cnblogs.com/strongerPian/p/12686337.html
今日推荐