mirror of
https://github.com/Stone-Red-Code/website.git
synced 2026-09-04 17:25:59 +02:00
2.4 KiB
2.4 KiB
authors, created_at, title
| authors | created_at | title | |
|---|---|---|---|
|
2019/07/27 | Iterative vs Functional array helpers |
-- placeholder --
find
const users = [
{ name: "Joe", age: 25 },
{ name: "John", age: 17 },
{ name: "Jane", age: 16 },
]
Iterative way:
let foundUser = null
users.forEach(user => {
if (user.name === "John") {
foundUser = user
}
})
Functional way:
const foundUser = users.find(user => user.name === "John")
filter
const users = [
{ name: "Joe", age: 25 },
{ name: "John", age: 17 },
{ name: "Jane", age: 16 },
]
Iterative way:
const youngerUsers = []
users.forEach(user => {
if (user.age < 18) {
youngerUsers.push(user)
}
})
Functional way:
const youngerUsers = users.filter(user => user.age < 18)
map
const users = [
{ name: "Joe", age: 25 },
{ name: "John", age: 17 },
{ name: "Jane", age: 16 },
]
Iterative way:
const userNames = []
users.forEach(user => {
userNames.push(user.name)
})
Functional way:
const userNames = users.map(user => user.name)
reduce
const users = [
{ name: "Joe", age: 25 },
{ name: "John", age: 17 },
{ name: "Jane", age: 16 },
]
Iterative way:
let totalAge = 0
users.forEach(user => {
totalAge += user.age
})
Functional way:
const totalAge = users.reduce((acc, user) => acc + user.age, 0)
some
const users = [
{ name: "Joe", age: 25 },
{ name: "John", age: 17 },
{ name: "Jane", age: 16 },
]
Iterative way:
let hasYoungUsers = false
for (let i = 0; users.length > i; i++) {
if (user > 18) {
hasYoungUsers = true
break
}
}
Functional way:
const hasYoungUsers = users.some(user => user.age < 18)
every
const users = [
{ name: "Joe", age: 25 },
{ name: "John", age: 17 },
{ name: "Jane", age: 16 },
]
Iterative way:
let allUsersAreOldEnough = true
for (let i = 0; users.length > i; i++) {
if (user.age > 18) {
allUsersAreOldEnough = false
break
}
}
Functional way:
const hasYoungUsers = users.every(user => user.age < 18)
includes
const pets = ["cat", "dog", "bat"]
Iterative way:
let found = false
pets.forEach(pet => {
if (pet === "dog") {
found = true
}
})
// or most of the time done with indexOf
pets.indexOf("dogs") > 0
Functional way:
pets.includes("dogs")