数组的遍历方法

数组遍历方法:

for循环

        var arr = [1, 2, 3, 4, 5, 6, 7]
        //for 循环
        for(let i=0;i<arr.length;i++){
             document.write(arr[i]);
        }
        //1234567
        //for循环倒循环
        var arr = [1, 2, 3]
    	for (let i = arr.length - 1; i >= 0; i--) {
      		console.log(arr[i]);
    	}

forEach

        //forEach  常用作判断
    arr.forEach((item, index) => {
      document.write(item)
      if (item > 2) {
        console.log(item);
      }
    })
    //3 4 5 6 7 8

for in

//遍历数组访问的是下标
    for (let i in arr) {
      document.write(arr[i])
      console.log(i); //遍历的是数组的index 01234
    }
    //1234567
 
 //遍历对象访问的是对象的key值
     var obj={a:1,b:2,c:3,d:4}

    for(let key in obj){
      console.log(key);    //a b c d 
      console.log(obj[key]);  //1 2 3 4
    }
//遍历类数组
    function fn() {
      console.log(arguments);
      arguments.name = 'haHa'
      for (let i in arguments) { //for in 遍历类数组,会遍历所有key值,包括其他自定义属性
        //console.log(i + ':' + arguments[i]);  
        console.log(i);  //a b c name
      }
    }
    fn('a', 'b', 'c')

for of

    for of 遍历数组遍历的是value;for of遍历类数组,遍历的也是value,但它不会遍历自定义属性
    let arr=[a,b,c,d];
    for(let i of arr){  
       console.log(i); //a,b,c,d
    }
    //遍历类数组
    function fn() {
      console.log(arguments);
      arguments.name = 'haHa'  //name就是自定义属性
      for (let i of arguments) {
        console.log(i + ':' + arguments[i]);  //undefined
        console.log(i); //    a,b,c  
      }
    }
    fn('a', 'b', 'c')

 常规遍历对象会报错;需要配合object.keys才能遍历对象
    var obj = {
      name: 'tom',
      age: 12,
      friend: ['jerry', 'jnm']
    }
    for (let i of obj) {
      //Uncaught TypeError: obj is not iterable
      //for of 无法直接遍历对象
      console.log(i);
    }
    //解决方法
    console.log(Object.keys(obj)); 
    var Obj = Object.keys(obj)
    console.log(Obj);
    //Object.keys方法会把对象的key返回成一个数组,遍历的不再是对象,而是对象的key
    for (let i of Obj) {
      console.log(i + ':' + obj[i]);
    }

map

 map的返回值是新的数组,它相当于原数组的映射,不会修改原来的数组;
 map可以返回符合条件的元素或元素的值
    var arr = [{ name: 1 }, { name: 2 }, { name: 3 }]

    let newArr = arr.map((item, index) => {
      return item.name
    })
    console.log(newArr);   //1,2,3
       


        //find  只会返回第一个满足条件的值
        // arr=arr.find(item=>{
        //     return item>4
        // })
        // document.write(arr)

filter

 filter是过滤,可以返回符合条件的元素,不会修改原数组,但无法返回元素的值
    var arr = [{ name: 1 }, { name: 2 }, { name: 3 }]
    
    let newArr=arr.filter((item,index)=>{
      return item.name>1
    })

    console.log(newArr); // [{name:2},{name:3}]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值