[Javascript] Compare a Generator to Using Array Map and Filter

Posted Answer1215

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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)]);

 

以上是关于[Javascript] Compare a Generator to Using Array Map and Filter的主要内容,如果未能解决你的问题,请参考以下文章

使用javaScript来实现一个有序链表

JavaScript必备知识

iOS 使用compare 进行对比

sort中的比较函数compare

CAS(Compare and Swap)理解

如何用Beyond Compare对比压缩文件