# toggle

URL: https://caijiao.org/radash/array/toggle
Source: docs/radash/array/toggle.md
Description: 切换项目在数组中的存在状态 如果匹配条件的项目已存在于列表中，则将其删除

切换项目在数组中的存在状态


## 基本用法

如果匹配条件的项目已存在于列表中，则将其删除。如果不存在，则添加它。

```ts
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)

您可以传递一个可选的`toKey`函数来确定非原始值的标识。在处理更复杂的数据类型时很有用。

```ts
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)

默认情况下，如果项目不存在，toggle将追加该项目。如果您需要前置项目，可以在options参数中覆盖`strategy`。

```ts
import { toggle } from 'radash'

const gods = ['ra', 'zeus', 'loki']

toggle(gods, 'vishnu', g => g, { strategy: 'prepend' }) // => [vishnu, ra, zeus, loki]
```
