React 循环遍历

学习目标

  • forEach
  • map
  • filter
  • reduce
  • for...in
  • for..of

forEach

forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
注意: forEach() 对于空数组是不会执行回调函数的。
 
语法:forEach( currentValue , index , arr)
 
<script>
    let arr = [1,2,3,4,5,6,7,8];
    arr.forEach((item, index, arr) => {
        console.log('item:' + item + ',index' + index);
        console.log(arr);
    })
</script>

arr一般不作参数传入,所以一般写法为forEach(item, index)

forEach没有返回值

<script>
    let arr = [1,2,3,4,5,6,7,8];
    let res = arr.forEach((item, index, arr) => {
        console.log('item:' + item + ',index' + index);
    })
    console.log(res);
</script>

forEach没有返回值,因此res为undefined。

map

对数组每一项进行加工,加工完成之后返回一个新的数组。
 
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map() 方法按照原始数组元素顺序依次处理元素。
注意: map() 不会对空数组进行检测。
注意: map() 不会改变原始数组。
 
<script>
    let arr = [1,2,3,4,5,6];
    console.log(arr);
    let res = arr.map((item, index, arr) => {
        let str = item + index;
        return str;
    })
    console.log(res);
    console.log(arr);
</script>

map前后的arr没有变化,res是新数组 res[i] = arr[i] + i;
 
列表循环选择map是因为,列表是一个数组,map的返回结果也是数组,forEach返回undefined。
 

filter

<script>
    let arr = [1,2,3,4,5,6];
    console.log(arr);
    let res = arr.filter((item, index, arr) => {
        if (item%2 == 0) {
            return true;
        } else {
            return false
        }
    })
    console.log(res);
    console.log(arr);
</script>

filter(过滤):对内容进行筛选。false即去除,true即留下。生成新数组,不影响原来数组。
 

reduce

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
reduce() 可以作为一个高阶函数,用于函数的 compose。
注意: reduce() 对于空数组是不会执行回调函数的。
 
语法: array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

<script>
    let arr = [1,2,3,4,5,6];
    console.log(arr);
    let res = arr.reduce((total, currentValue, currentIndex) => {
        console.log("total:" + total + ",currentValue:" + currentValue + ",currentIndex:" + currentIndex)
        return total+currentValue;
    }, 0)
    console.log(res);
    console.log(arr);
</script>

for...in..

for ... in是为遍历对象属性而构建的,不适用于遍历数组。

<script>
    var obj = {a:1, b:2, c:3};
    for (var key in obj) {
      console.log("key:" + key + "; value: " + obj[key]);
    }
</script>

接受一个对象作为参数。被调用时迭代传入对象的所有可枚举属性然后返回一个所有属性名和其对应值的字符串。循环key值。

for...of

在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句。

<script>
    var obj = [1,2,3,4,5];
    for (var item of obj) {
      console.log(item);
    }
</script>

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值