const numbers = [1, 2, 3, 4, 5];

const doubledNumbers = numbers.map(function(number) {
    return number * 2; // Returns a new mapped array
});

console.log(doubledNumbers); // Output: [2, 4, 6, 8, 10]

// The original array remains unchanged.
console.log(numbers); // Output: [1, 2, 3, 4, 5]
/* The map() function is
   used to transform each element of an array. */

// In the following example, the goal is to convert all lowercase letters to uppercase.
[a, b, c, d].map(lowercase → uppercase) 👉 [A, B, C, D]
arr.map(function(currentValue[, index[, array]]) {
    // Logic to transform (map) each element: must return the transformed result
}[, thisArg]);
// Arrow function with only current value:
map((element) => { /* … */ })

// Arrow function with current value and index:
map((element[, index]) => { /* … */ })

// Arrow function with current value, index, and original array:
map((element[, index[, array]]) => { /* … */ })

// Using a named callback function:
map(callbackFn)
// or with thisArg:
map(callbackFn[, thisArg])

// Inline anonymous function:
arr.map(function(element) { /* ... */ })
arr.map(function(element, index) { /* ... */ })
arr.map(function(element, index, array) { /* ... */ }, thisArg)
const numbers = [1, 2, 3, 4, 5];

// Using map()
const squaredNumbersMap = numbers.map(function(number) {
    return number * number;
});
console.log("Using map():", squaredNumbersMap);
// Output: Using map(): [1, 4, 9, 16, 25]

// Using forEach()
const squaredNumbersForEach = [];

numbers.forEach(function(number) {
    squaredNumbersForEach.push(number * number);
});
console.log("Using forEach():", squaredNumbersForEach);
// Output: Using forEach(): [1, 4, 9, 16, 25]
const numbers = [1, 2, 3, 4, 5];

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

console.log(squaredNumbers);
// Output: [1, 4, 9, 16, 25]
const fruits = ["Apple", "Banana", "Cherry"];

const lowercaseFruits = fruits.map(function(fruit) {
    return fruit.toLowerCase(); // Convert each string to lowercase
});

console.log(lowercaseFruits);
// Output: ['apple', 'banana', 'cherry']
const users = [
    {id: 1, name: "Alice"},
    {id: 2, name: "Bob"},
    {id: 3, name: "Charlie"}
];

const names = users.map(function(user) {
    return user.name;
});

console.log(names);
// Output: ['Alice', 'Bob', 'Charlie']
const numbers = [1, 2, 3, 4, 5];

const modifiedNumbers = numbers.map(function(number) {
    if (number % 2 === 0) {
        return "Even";
    } else {
        return "Odd";
    }
});

console.log(modifiedNumbers);
// Output: ['Odd', 'Even', 'Odd', 'Even', 'Odd']