0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

map, filter, reduceについて Leetcodeを使って調べる!!!

Posted at

leetcode : 2635. Apply Transform Over Each Element in Array

mapとは?

const arr: number[] = [1, 2, 3, 4];


const mapped: number[] = arr.map(num => num * 2);

console.log(mapped);  // result: [2, 4, 6, 8]

leetcode : 2635

function map(arr: number[], fn: (n: number, i: number) => number): number[] {
    const result: number[] = [];
    for (let i =0; i<arr.length; i++){
        result.push(fn(arr[i],i))
    }
    
    return result;

};


const plusOne = (n: number): number => n + 1;
console.log(map([1, 2, 3], plusOne)); // result: [2, 3, 4]

const plusIndex = (n: number, i: number): number => n + i;
console.log(map([1, 2, 3], plusIndex)); // result: [1, 3, 5]

const constant = (): number => 42;
console.log(map([1, 2, 3], constant)); // result: [42, 42, 42]

pythonの場合

def map_function(arr, fn):
    return [fn(x, i) for i, x in enumerate(arr)]

def plus_one(n, i):
    return n + 1

result = map_function([1, 2, 3], plus_one)
print(result)  # result: [2, 3, 4]

study!

関数を引数で使う場合は今までなかったので知らなかっだが、
この問題通して関数も引数使うことができると知りました。
なお、ラムダ式使うことで短くコード作成することができます。

[参考資料]
https://github.com/vgratsilev/LeetCode/tree/main/Problems/2635.%20Apply%20Transform%20Over%20Each%20Element%20in%20Array
https://leetcode.com/problems/apply-transform-over-each-element-in-array/?envType=study-plan-v2&envId=30-days-of-javascript

leetcode : 2634. Filter Elements from Array

filterとは?

const arr: number[] = [1, 2, 3, 4, 5];

const filtered: number[] = arr.filter(num => num > 3);

console.log(filtered);  // result: [4, 5]

leetcode : 2634

type Fn = (n: number, i: number) => any

function filter(arr: number[], fn: Fn): number[] {

    const result: number[] = [];
    for(let i=0; i<arr.length; i++){
        if (fn(arr[i],i)){
            result.push(arr[i]);
        }
    }
    return result;
    
};

const greaterThan10 = (n: number): boolean => n > 10;

const arr = [0, 10, 20, 30];
console.log(filter(arr, greaterThan10)); 

study!

ifでfilterする時引数として関数を使うことが可能です。

[参考資料]
https://leetcode.com/problems/filter-elements-from-array/description/?envType=study-plan-v2&envId=30-days-of-javascript

leetcode : 2626. Array Reduce Transformation

reduceとは?

const arr: number[] = [1, 2, 3, 4];


const sum: number = arr.reduce((accum: number, curr: number) => accum + curr, 0);

console.log(sum);  // result: 10

leetcode 2626

type Fn = (accum: number, curr: number) => number

function reduce(nums: number[], fn: Fn, init: number): number {

    nums.forEach((number, i) => {
        init=fn(init,number)
    });
    return init
    
}

const nums1 = [1, 2, 3, 4];
const fn1 = (accum: number, curr: number): number => accum + curr;
const init1 = 0;

console.log(arrayReduce(nums1, fn1, init1)); 

[参考資料]
https://leetcode.com/problems/array-reduce-transformation/?envType=study-plan-v2&envId=30-days-of-javascript

最後に

日本語の勉強するために作成しておりますので、間違った日本語や内容がありましたらいつでもフィードバックいただければ幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?