# getorset-anything

> Gets a value from a Map/Obj or sets an initial value when not found and returns that. TypeScript supported.

Latest version **1.1.1** (published 2026-09-17) · MIT license · 0 weekly downloads

## Install

```sh
npm install getorset-anything
pnpm add getorset-anything
yarn add getorset-anything
bun add getorset-anything
```

## Health

**Score 60/100 (C)** — status: active.

Positive: esm support; no vulnerabilities; recently updated; high maintenance score.

Warnings: low downloads; no types.

## Facts

| | |
|---|---|
| Version | 1.1.1 |
| Published | 2026-09-17 |
| First published | 2022-08-28 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM |
| Node | >=18 |
| Dependencies | 0 |
| Unpacked size | 8.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 8 |
| Author | Luca Ban - Mesqueeb (https://cycraft.co) |
| Maintainers | mesqueeb |
| Keywords | javascript, map, mapgetset, map-get-or-set, object-get-or-set, getorset-anything, get-or-set, js-map, typescript, map-setter, object-setter, obj-set-get, map-util, obj-util, setget, getset, getter-setter, setter-getter |

## Links

- npm: https://www.npmjs.com/package/getorset-anything
- Repository: https://github.com/mesqueeb/getorset-anything
- Homepage: https://github.com/mesqueeb/getorset-anything#readme
- Issues: https://github.com/mesqueeb/getorset-anything/issues
- Funding: https://github.com/sponsors/mesqueeb
- npm.io page: https://npm.io/package/getorset-anything

## Alternatives

- [@openai/codex-sdk](https://npm.io/package/@openai/codex-sdk.md) — 731.4K weekly downloads
- [babel-plugin-transform-react-jsx](https://npm.io/package/babel-plugin-transform-react-jsx.md) — 565.0K weekly downloads
- [babel-helper-remove-or-void](https://npm.io/package/babel-helper-remove-or-void.md) — 508.5K weekly downloads
- [@pnpm/store-controller-types](https://npm.io/package/@pnpm/store-controller-types.md) — 186.9K weekly downloads
- [react-native-signature-canvas](https://npm.io/package/react-native-signature-canvas.md) — 155.6K weekly downloads

## Recent versions

- 1.1.1 (latest) — 2026-09-17
- 1.1.0 — 2025-09-14
- 1.0.2 — 2025-02-19
- 1.0.1 — 2024-06-05
- 1.0.0 — 2024-06-01
- 0.1.0 — 2024-05-31
- 0.0.5 — 2023-05-23
- 0.0.4 — 2023-05-07
- 0.0.3 — 2022-10-18
- 0.0.2 — 2022-08-28
- 0.0.1 — 2022-08-28

## README

# Get or Set Anything 🐊

<a href="https://www.npmjs.com/package/getorset-anything"><img src="https://img.shields.io/npm/v/getorset-anything.svg" alt="Total Downloads"></a>
<a href="https://www.npmjs.com/package/getorset-anything"><img src="https://img.shields.io/npm/dw/getorset-anything.svg" alt="Latest Stable Version"></a>

```
npm i getorset-anything
```

Get a Map/Obj value, or if it didn't exist yet set it and return that. Fully **TypeScript** supported! A simple & small integration.

## Motivation

I created this package because I always hated doing this over and over again:

```ts
const map = new Map<string, number[]>()

const id = 'abc'

let arr = map.get(id)
if (arr === undefined) {
  arr = []
  map.set(id, arr)
}

arr.push(100)
```

So that is exactly what `getorset-anything` does for you! 💯

`getorset-anything` has performance in mind. It won't do a `.has()` check, like other libraries do, when it found the value it will immediately return it.

## Usage

Maps

```ts
import { mapGetOrSet } from 'getorset-anything'

const map = new Map<string, number[]>()

const arr = mapGetOrSet(map, 'abc', (): number[] => [])

arr.push(100) // OK!
```

Objects

```ts
import { objGetOrSet } from 'getorset-anything'

const obj: Record<string, number[]> = {}

const arr = objGetOrSet(obj, 'abc', (): number[] => [])

arr.push(100) // OK!
```

## TypeScript Support

You don't have to do anything extra for TypeScript! It comes with awesome type support.

```ts
import { mapGetOrSet } from 'getorset-anything'

const map = new Map<string, number[]>()

const arr = mapGetOrSet(map, 'abc', () => []) // OK!
const arr2 = mapGetOrSet(map, 'abc', () => ({})) // NG! ⛔️

arr.push(100) // OK!
arr.push('100') // NG! ⛔️
```

## Meet the family (more tiny utils with TS support)

- [is-what 🙉](https://github.com/mesqueeb/is-what)
- [is-where 🙈](https://github.com/mesqueeb/is-where)
- [merge-anything 🥡](https://github.com/mesqueeb/merge-anything)
- [check-anything 👁](https://github.com/mesqueeb/check-anything)
- [remove-anything ✂️](https://github.com/mesqueeb/remove-anything)
- [getorset-anything 🐊](https://github.com/mesqueeb/getorset-anything)
- [map-anything 🗺](https://github.com/mesqueeb/map-anything)
- [filter-anything ⚔️](https://github.com/mesqueeb/filter-anything)
- [copy-anything 🎭](https://github.com/mesqueeb/copy-anything)
- [case-anything 🐫](https://github.com/mesqueeb/case-anything)
- [flatten-anything 🏏](https://github.com/mesqueeb/flatten-anything)
- [nestify-anything 🧅](https://github.com/mesqueeb/nestify-anything)

---
_Source: https://npm.io/package/getorset-anything · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
