Skip to content

Instantly share code, notes, and snippets.

@nicobytes
Created October 17, 2020 12:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nicobytes/b0ce00bed010e9cc5e41e4623e7dd3e3 to your computer and use it in GitHub Desktop.
Save nicobytes/b0ce00bed010e9cc5e41e4623e7dd3e3 to your computer and use it in GitHub Desktop.
MapJS
const numbers = [1,2,3,4];
// Mutable
for (let index = 0; index < numbers.length; index++) {
numbers[index] = numbers[index] + 2;
}
console.log(numbers);
// Inmutable v1
const newNumbers = [];
for (let index = 0; index < numbers.length; index++) {
newNumbers.push(numbers[index] + 2);
}
console.log(numbers, newNumbers);
// Inmutable v2
const newNumbersV2 = [];
numbers.forEach((item) => {
newNumbersV2.push(item + 2);
});
console.log(numbers, newNumbersV2);
// Inmutable v3 (map)
const newNumbersV3 = numbers.map((item) => {
return item + 2;
});
console.log(numbers, newNumbersV3);
// callback
function sumV1(item) {
return item + 2;
}
const sumV2 = (item) => {
return item + 2;
}
const sumV3 = (item) => item + 2;
const newNumbersV4 = numbers.map((item) => item + 2);
console.log(numbers, newNumbersV4);
// Objs 1
const orders = [
{
customerName: 'Nicolas',
total: 60,
delivered: true,
},
{
customerName: 'Zulema',
total: 120,
delivered: false,
},
{
customerName: 'Santiago',
total: 180,
delivered: true,
},
{
customerName: 'Valentina',
total: 240,
delivered: true,
},
];
const names = orders.map((item) => item.customerName);
const totals = orders.map((item) => item.total);
console.log(names);
console.log(totals);
console.log('-'.repeat(50));
console.log(orders);
// Objs 2
// const newOrders = orders.map((item) => {
// const taxes = (16 * item.total) / 100;
// item.taxes = taxes;
// return item;
// });
// console.log(newOrders);
// console.log('-'.repeat(50));
// console.log(orders);
// Objs 3
const newOrdersV2 = orders
.map((item) => {
return {
...item,
taxes: (16 * item.total) / 100
};
})
console.log(newOrdersV2);
console.log('-'.repeat(50));
console.log(orders);
// Objs 4
const total = orders
.filter(item => item.delivered)
.map((item) => {
return {
...item,
taxes: (16 * item.total) / 100
};
})
.reduce((count, item) => count + item.taxes, 0);
console.log(total);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment