const arr = ["あ", "い", "う"];

arr.forEach(function(element) {
    console.log(element);
});
// "あ"
// "い"
// "う"
arr.forEach(function(currentValue[, index[, array]]) {
    // 実行するコード
}[, thisArg]);
// アロー関数
forEach((element) => { /* … */ })
forEach((element[, index]) => { /* … */ })
forEach((element[, index[, array]]) => { /* … */ })

// コールバック関数
forEach(callbackFn)
forEach(callbackFn[, thisArg])

// インラインコールバック関数
forEach(function (element) { /* … */ })
forEach(function (element[, index]) { /* … */ })
forEach(function (element[, index[, array]]) { /* … */ })
forEach(function (element[, index[, array]]) { /* … */ }[, thisArg])
const numbers = [1, 2, 3, 4, 5];

const result = numbers.forEach(function(number) {
    return number * 2; // コールバック関数でどんな値を返しても、forEach() の戻り値は常に undefined です。
});

console.log(result); // 出力: undefined
const numbers = [1, 2, 3, 4, 5];

numbers.forEach(function(number) {
    console.log(number);
}); // 出力: 1 2 3 4 5
const numbers = [1, 2, 3, 4, 5];
let sum = 0;

numbers.forEach(function(number) {
    sum += number;
});

console.log(sum); // 出力: 15 (1 + 2 + 3 + 4 + 5)
const numbers = [10, 25, 30, 45];

let foundNumber = null;

numbers.forEach(function(number) {
    if (number > 30) {
        foundNumber = number;
    }
});

console.log(foundNumber); // 出力: 45
const names = ['Alice', 'Bob', 'Charlie'];
const greetings = [];

names.forEach(function(name) {
    greetings.push(`Hello, ${name}!`); // 配列の末尾に値を追加する
});

console.log(greetings); // 出力: ['Hello, Alice!', 'Hello, Bob!', 'Hello, Charlie!']
const people = [
    {name: 'Alice', age: 30},
    {name: 'Bob', age: 25},
    {name: 'Charlie', age: 35}
];

people.forEach(function(person) {
    person.age += 5; // 全ての人の年齢を5歳ずつ増やす
});

console.log(people);
/* 出力:
    [
        {name: 'Alice', age: 35},
        {name: 'Bob', age: 30},
        {name: 'Charlie', age: 40}
    ]
*/
const numbers = [1, 2, 3, 4];
let foundNumber = null;

for (let i = 0; i < numbers.length; i++) {
    if (numbers[i] > 3) {
        foundNumber = numbers[i];
        break; // 繰り返しを中断
    }
}

console.log(foundNumber); // 出力: 4
const numbers = [1, 2, 3, 4, 5];

const doubledNumbers = numbers.map(function(number) {
    return number * 2;
});

console.log(doubledNumbers); // 出力: [2, 4, 6, 8, 10]
const numbers = [1, 2, 3, 4, 5];

// forEach() 関数を使用
const squaredNumbersForEach = [];

numbers.forEach(function(number) {
    squaredNumbersForEach.push(number * number);
});

console.log("Using forEach():", squaredNumbersForEach);
// 出力: "Using forEach():" [1, 4, 9, 16, 25]

// map() 関数を使用
const squaredNumbersMap = numbers.map(function(number) {
    return number * number;
});

console.log("Using map():", squaredNumbersMap);
// 出力: "Using map():" [1, 4, 9, 16, 25]