• 简单了解map,filter,some,every,forEach,for in,for of,find,用法


    map

    有返回值,返回一个新的数组,每个元素为调用func的结果

    let list=[1,2,3,4,5];
    let other=list.map((item,index)=>{
       return item*2; 
    })
    console.log(other);
    //print:[2,4,6,8,10]

    filter

    有返回值,返回一个符合func条件的元素数组

    let list=[1,2,3,4,5];
    let other=list.filter((item,index)=>{
      return item%2;
    });
    console.log(other);
    //print:[1,3,5]

    some

    返回一个boolean,判断是否有元素符合func条件,如果有一个元素符合条件,则循环会终止

    let list=[1,2,3,4,5];
    list.some((item,index)=>{
      console.log(item,index);
      return item>3;
    });
    //print:1,0 2,1 3,2 4,3
    //return true

    every

    返回一个boolean,判断每个元素是否符合func条件,有一个不满足func条件,则循环终止,返回false

    let list = [1, 2, 3, 4, 5];
    list.every((item,index)=>{
      console.log(item,index);
      return item<3;
    });
    //print:1,0 2,1 3,2
    //return false

    fotEach

    没有返回值,只针对每个元素调用func。

    有点:代码简洁

    缺点:无法使用break,return等终止循环

    let list = [1, 2, 3, 4, 5];
    let other=[];
    list.forEach((item,index)=>{
      other.push(item*2);
    });
    console.log(other);
    //print:[2,4,6,8,10]

    for in

    for-in循环实际是为循环“enumerable”对象而设计的,for in 也可以循环数组,但是不推荐这样使用,for-in是用来循环带有字符串key的对象的方法

    缺点:只能获取对象的键名,不能直接获取键值

    var obj={a:1,b:2,c:3};
    for(var prop in obj){
      console.log("obj."+prop+"="+obj[prop]);
    }
    //print:"obj.a = 1" "obj.b = 2" "obj.c = 3"

    for of

    for of为ES6提供,具有iterator接口,就可以用for of循环遍历他的成员。也就是说,for of循环内容部调用的是数据结构的Symbol.iterator方法。

    for of循环可以使用的范围包括数组、Set和Map结构、某些类似数组的对象(比如arguments对象、DOM NodeList对象)、Generator对象,以及字符串。

    有些数据结构是在现有数据结构的基础上,计算生成的。比如,ES6的数组、set、map都部署了一下三个方法,调用后都返回遍历器对象

    entries

    entries()返回一个遍历器对象,用来遍历[键名,键值]组成的数组。对于数组,键名就是索引值;对于set,键名与键值相同。map结构的iterator接口,默认就是调用entries方法

    keys

    keys()返回一个遍历器对象,用来遍历所有的键名。

    values

    values()返回一个遍历器对象,用来遍历所有的键值。

    这三个方法调用后生成的遍历器对象,所遍历的都是计算生成的数据结构

    // 字符串
    let str = "hello";
    for (let s of str) {
     console.log(s); // h e l l o
    }
    // 遍历数组
    let list = [1, 2, 3, 4, 5];
    for (let e of list) {
      console.log(e);
    }
    // print: 1 2 3 4 5
    // 遍历对象
    obj = {a:1, b:2, c:3};
    for (let key of Object.keys(obj)) {
     console.log(key, obj[key]);
    }
    // print: a 1 b 2 c 3

    说明:对于普通的对象,for...in循环可以遍历键名,for..of循环会报错

    一种解决方法是,使用Object.keys方法将对象的键名生成一个数组,然后遍历这个数组

    // entries
    let arr = ['a', 'b', 'c'];
    for (let pair of arr.entries()) {
     console.log(pair);
    }
    // [0, 'a']
    // [1, 'b']
    // [2, 'c']

     find

    find()方法返回通过测试(函数内判断)的数组的第一个元素的值

    ①:当数组中的元素在测试条件时返回true时,find()返回符合条件的元素,之后的值不会再调用执行函数

    ②:如果没有符合条件的元素,返回undefined

    注意:find()对于空数组,函数是不会执行的。find()并没有改变数组的原始值。

    var ages = [3, 10, 18, 20];
     
    function checkAdult(age) {
        return age >= 18;
    }
    //18
  • 相关阅读:
    怎样删掉vc++ 对话框中的蓝色虚线框
    显示隐藏文件.reg
    WIMBuilder2软件包及精简方案,请把补丁包放到指定位置
    支持TV远程控制的WIN10PEX64_17763网络版by双心
    opera11以下添加搜索引擎的办法
    后来,我发现,要想用好WIMBuilder2你必须具有以下能力:
    关于远程装机
    夏普复印机解锁码
    SCITE设置修改说明
    c++的CreateFile导致内存不能为written错误
  • 原文地址:https://www.cnblogs.com/chao202426/p/11113827.html
Copyright © 2020-2023  润新知