zoukankan      html  css  js  c++  java
  • [Javascript] Compare a Generator to Using Array Map and Filter

    Generators offer flexible alternatives to working with arrays and how you want to iterate through the data. While most scenarios are covered by the methods included on Arrays such as "map" and "filter", generators are great for covering complex scenarios when writing all your logic in map and filter functions might become difficult.

    let names = ["John", "Mindy", "Sally"]
    
    let result = names.filter(name => name.includes("y")).map(name => name.toLocaleLowerCase())
    console.log(result) // ["mindy", "sally"]
    
    // -- Generator --
    
    function* format(array: string[]) {
        for (let name of array) {
            if (name.includes("y")) {
                yield name.toLowerCase();
            }
        }
    }
    
    console.log([...format(names)]); //["mindy", "sally"]

    With Generator, we can do more control on result.

    let names = ["John", "Mindy", "Sally"]
    
    let result = names.filter(name => name.includes("y")).map(name => name.toLocaleLowerCase())
    console.log(result) // ["mindy", "sally"]
    
    // -- Generator --
    
    function* format(array: string[]) {
        for (let name of array) {
            if (name.includes("y")) {
                yield name.toLowerCase(); // ["mindy", "sally"]
                yield name.toUpperCase(); // ["mindy", "MINDY", "sally", "SALLY"]
                yield* array; // ["mindy", "MINDY", "John", "Mindy", "Sally", "sally", "SALLY", "John", "Mindy", "Sally"]
                yield 'END'; // ["mindy", "MINDY", "John", "Mindy", "Sally", "END", "sally", "SALLY", "John", "Mindy", "Sally", "END"]
            }
        }
    }
    
    console.log([...format(names)]);
  • 相关阅读:
    debounce
    react-xiguan
    备忘录
    ie导出问题
    umi 动态路由配置
    tsconfig
    关于vue 和react 中的hash与锚点冲突问题
    lodash
    pyplot绘图
    Numpy实现图像变换
  • 原文地址:https://www.cnblogs.com/Answer1215/p/12168027.html
Copyright © 2011-2022 走看看