Transforming Arrays
const nums = [1, 2, 3, 4, 5];
// map — transform each element
nums.map(n => n * 2) // [2, 4, 6, 8, 10]
// filter — keep matching elements
nums.filter(n => n > 3) // [4, 5]
// reduce — accumulate to single value
nums.reduce((sum, n) => sum + n, 0) // 15
// flatMap — map + flatten
[[1,2],[3,4]].flatMap(a => a) // [1, 2, 3, 4]
// flat — flatten nested arrays
[1, [2, [3]]].flat(Infinity) // [1, 2, 3]
Searching
const users = [{name:'Alice',age:25},{name:'Bob',age:30}];
users.find(u => u.age > 25) // {name:'Bob', age:30}
users.findIndex(u => u.name === 'Bob') // 1
nums.includes(3) // true
nums.indexOf(3) // 2
nums.some(n => n > 4) // true
nums.every(n => n > 0) // true
Modifying
// slice — copy portion (non-destructive)
[1,2,3,4,5].slice(1, 3) // [2, 3]
// splice — remove/insert (MUTATES)
const arr = [1,2,3,4,5];
arr.splice(2, 1, 99); // arr = [1,2,99,4,5]
// sort (MUTATES)
[3,1,2].sort((a,b) => a - b) // [1, 2, 3]
// reverse (MUTATES)
[1,2,3].reverse() // [3, 2, 1]
// toSorted / toReversed (non-mutating, ES2023)
[3,1,2].toSorted((a,b) => a-b) // [1,2,3] — original unchanged
Adding/Removing
const arr = [1, 2, 3];
arr.push(4) // [1,2,3,4] — add to end
arr.pop() // [1,2,3] — remove from end
arr.unshift(0) // [0,1,2,3] — add to start
arr.shift() // [1,2,3] — remove from start
[...arr, 4, 5] // [1,2,3,4,5] — spread (non-mutating)
Iteration
arr.forEach((val, idx) => console.log(idx, val));
for (const val of arr) { console.log(val); }
for (const [idx, val] of arr.entries()) { console.log(idx, val); }