Skip Navigation

Scott Spence

JavaScript snippets from around the web

3 min read
Hey! Thanks for stopping by! Just a word of warning, this post is 7 years old, wow! If there's technical information in here it's more than likely out of date.

This is a dump of all the snippets I have collected over the last 18 months or so, that I’m going to document here so it’s probably going to be a mess but it’s mainly for my reference so 😛

Arrays

Straight from Wes himself.

🔥 The Array .some() Method is super handy for checking if at least one item in an array meets what you are looking for

const user = {
  name: 'Dave',
  permissions: ['USER', 'CREATE_ITEM'],
}

// check if the user is either admin or can delete in item
const canDelete = user.permissions.some(p =>
  ['ADMIN', 'DELETE_ITEM'].includes(p)
)
// canDelete is false

// check if a user is either admin or can create in item
const canCreate = user.permissions.some(p =>
  ['ADMIN', 'CREATE_ITEM'].includes(p)
)
// canDelete is true

On the same note .every() is great for checking every item in an array meets what you are looking for.

const people = [
  { name: 'Dave', age: 42 },
  { name: 'Sue', age: 26 },
  { name: 'India', age: 9 },
]

const canEveryoneDrink = people.every(p => p.age >= 18)
// false

const canSomeoneDrink = people.some(p => p.age >= 18)
// true

const howManyDrinkers = people.filter(p => p.age >= 18).length
// 2

Via Addy Osmani

Get the unique values of an array in JS. Use ES2015 Set() and ...rest to discard duplicate values.

const uniqueArray = arr => [...new Set(arr)]

uniqueArray([1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 0, 0, 10, 10])
// Array(9) [ 1, 2, 3, 4, 5, 6, 7, 0, 10 ]
uniqueArray([
  'London',
  'Manchester',
  'Cambridge',
  'London',
  'Greater London',
  'London',
  'Manchester',
])
// Array(4) [ "London", "Manchester", "Cambridge", "Greater London" ]

Array.from() accepts another .map arguments. Useful for calling each element of a created array.

const year = new Date().getFullYear()
const totalYears = 5

Array.from('web')
// Array(3) [ "w", "e", "b" ]

Array.from(Array(totalYears), (_, i) => year + i)
// Array(5) [ 2019, 2020, 2021, 2022, 2023 ]

Array.from({ length: totalYears }, (_, i) => year + i)
// Array(5) [ 2019, 2020, 2021, 2022, 2023 ]

Async await

const getAsyncStuff = async name => {
  try {
    const response = await fetch(
      `https://api.github.com/users/${name}`
    )
    return await response.json()
  } catch (err) {
    console.error(err)
  }
}

🔥 4 Ways to handle the double promise with fetch() and async+await

const url = 'https://api.github.com/users/spences10'

async function go() {
  // 1. tac a promise onto the end
  const p1 = await fetch(url).then(data => data.json())

  // 2. double
  const p2 = await (await fetch(url)).json()

  // 3. capture promise in a variable
  const data = await fetch(url)

  // then convert it on another line
  const p3 = await data.json()

  // 4. create a utility function
  const p4 = await getJSON(url)
}

// use ... spread to get all arguments
function getJSON(...butter) {
  // then spread into the fetch function
  return fetch(...butter).then(data => data.json())
}

go()

There's a reactions leaderboard you can check out too.

Sign up for the newsletter

Want to keep up to date with what I'm working on?

Join other developers and sign up for the newsletter.

I care about the protection of your data. Read the Privacy Policy for more info.

Copyright © 2017 - 2026 - All rights reserved Scott Spence