Radash
  1. Array
  2. toggle

Basic usage

If the item matching the condition already exists in the list it will be removed. If it does not it will be added.

import { toggle } from 'radash'

const gods = ['ra', 'zeus', 'loki']

toggle(gods, 'ra')     // => [zeus, loki]
toggle(gods, 'vishnu') // => [ra, zeus, loki, vishnu]

toggle(list, item, identity)

You can pass an optional toKey function to determine the identity of non-primitive values. Helpful when working with more complex data types.

import { toggle } from 'radash'

const ra = { name: 'Ra' }
const zeus = { name: 'Zeus' }
const loki = { name: 'Loki' }
const vishnu = { name: 'Vishnu' }

const gods = [ra, zeus, loki]

toggle(gods, ra, g => g.name)     // => [zeus, loki]
toggle(gods, vishnu, g => g.name) // => [ra, zeus, loki, vishnu]

toggle(list, item, identity, options)

By default, toggle will append the item if it does not exist. If you need to prepend the item instead you can override the strategy in the options argument.

import { toggle } from 'radash'

const gods = ['ra', 'zeus', 'loki']

toggle(gods, 'vishnu', g => g, { strategy: 'prepend' }) // => [vishnu, ra, zeus, loki]