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する時引数として関数を使うことが可能です。
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));
最後に
日本語の勉強するために作成しておりますので、間違った日本語や内容がありましたらいつでもフィードバックいただければ幸いです。