zoukankan      html  css  js  c++  java
  • 循环的N种写法

    protype,json都算进去

    先总结一下
    伪数组的循环方式有,for,for-of
    数组的循环方式有for,forEach,map,filter,find,some,every,reduce,for-of
    对象的循环方式有for-in,JSON,for-of
    Set的循环有forEach,for-of
    Set的循环有forEach,for-of

    挑重要的说
    map,filter
    some,every通过循环里返回对象决定最后的结果是对错
    reduce,JSON,for-of

    map映射

    var arr = [11, 'lala', 'haha11', '123'];
    var newArr = arr.map(function(x, y, z) {
       // x代表数组的值可读性应该写成item
       // y代表数组的顺序可读性应该写成index
       // z代表原数组可读性应该写成self
       if(Number(x)) {
    	return x*10;
       }
    })
    console.log(arr); //原数组不会变,想改变原数组可以操作第三个参数
    console.log(newArr); //[110, undefined, undefined, 1230]
    

    filter过滤

    var arr = [11, 'lala', 'haha11', '123'];
    var newArr = arr.filter(function(x, y, z) {
       // x代表数组的值可读性应该写成item
       // y代表数组的顺序可读性应该写成index
       // z代表原数组可读性应该写成self
       if(Number(x)) {
    	x++;
    	return x * 10;
       }
    })
    console.log(arr); //原数组不会变,想改变原数组可以操作第三个参数
    console.log(newArr); //[110,1230]
    

    some一些判断

    var arr = [11, 'lala', 'haha11', '123'];
    var flag = arr.some(function(x, y) {
       // x代表数组的值可读性应该写成item
       // y代表数组的顺序可读性应该写成index
       // z代表原数组可读性应该写成self
       if(Number(x)) {
            // 自己判断是不是true或false,决定返回值
    	return true;
       }
    })
    console.log(arr); //原数组不会变
    console.log(flag); // true,无返回就默认false
    

    every所有判断

    var arr = [11, 'lala', 'haha11', '123'];
    var flag = arr.every(function(x, y) {
       // x代表数组的值可读性应该写成item
       // y代表数组的顺序可读性应该写成index
       // z代表原数组可读性应该写成self
       if(Number(x)) {
            // 自己判断是不是true或false,决定返回值
    	return true;
       }
    })
    console.log(arr); //原数组不会变
    console.log(flag); // false,无返回就默认false
    

    reduce计算
    这个是个非常秀的循环
    他会把上一次循环的结果作为下一次循环的参数,最后返回的是最后一次循环的返回

    arr.reduce(callback,[initialValue])
    callback (执行数组中每个值的函数,包含四个参数)
    1、previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue))
    2、currentValue (数组中当前被处理的元素)
    3、index (当前元素在数组中的索引)
    4、array (调用 reduce 的数组)
    initialValue (作为第一次调用 callback 的第一个参数。)

    // 不使用第二个参数
    var arr = [1, 2, 3, 4];
    var sum = arr.reduce(function(prev, cur, index, arr) {
        console.log(prev, cur, index);
        return prev + cur;
    })
    console.log(arr, sum);  // [1, 2, 3, 4] 10
    
    // 使用第二个参数
    var arr = [1, 2, 3, 4];
    var sum = arr.reduce(function(prev, cur, index, arr) {
        console.log(prev, cur, index);
        return prev + cur;
    },100)
    console.log(arr, sum);  // [1, 2, 3, 4] 110
    
    // 字母去重
    var str = "asdkaldaldadladkadkfjrjgj"
    var res = str.split("").reduce((x,y)=>{
    	x.includes(y) ? "" : x.push(y)
    	return x
    },[])
    console.log(res)
    
    // 字母个数
    var str = "asdkaldaldadladkadkfjrjgj"
    var res = str.split("").reduce((x,y)=>{
    	x[y] ? x[y]++ : x[y]=1
    	return x
    },{})
    console.log(res)
    
    // vue的data数据取值,获取data.aa.name的值
    var data = {
       aa:{
          name:"pdt"
       }
    }
    var str = "data.aa.name"
    str.split(".").reduce(function(x,y){
       return x[y]
    })
    

    JSON

    const user = {
       id: 229,
       name: 'John',
       email: 'john@awesome.com'
    };
    function replacer(key, value) {
       console.log(typeof value);
       if (key === 'email') {
       return undefined;
       }
       return value;
    }
    const userStr = JSON.stringify(user, replacer);
    console.log(userStr)
    

    for-of

    var arr = [11, 'lala', 'haha11', '123'];
    const obj = {
       id: 229,
       name: 'John',
       email: 'john@awesome.com'
    };
    var set = new Set([11, 'lala', 'haha11', '123']); //一个集合的意思
    var map = new Map([
    	['aa', 'aa的值'],
    	['bb', ['bb的值1', 'bb的值2']]
    ]); //一个字典的意思
    
    for(var x of arr) {
        console.log(x)
    }
    for(var [key, value] of Object.entries(obj)) {
        console.log(key,value)
    }
    for(var [key, value] of set.entries()) {
        console.log(key,value)
    }
    for(var [key, value] of map.entries()) {
        console.log(key,value)
    }
    
  • 相关阅读:
    matlab read txt
    matlab读取数据并操作
    NFS 共享信息泄露漏洞
    centos6.8环境下安装elasticdump进行elasticsearch索引结构mapping的备份
    Linux命令行下如何终止当前程序
    ubuntu 使用sudo vim /etc/apt/sources.list命令修改文件后该如何退出?
    隐写工具zsteg安装及使用教程
    【转】今天做CTF隐写术的题偶然发现一隐写图片查看的神器------stegsolve,分享给大家
    java安装及配置环境变量
    deepin使用root身份运行
  • 原文地址:https://www.cnblogs.com/pengdt/p/12037981.html
Copyright © 2011-2022 走看看