An open API service indexing awesome lists of open source software.

https://github.com/codewithmark/dom

Fastest way to manipulate json array data
https://github.com/codewithmark/dom

Last synced: 8 days ago
JSON representation

Fastest way to manipulate json array data

Awesome Lists containing this project

README

          

# Dom.js ๐Ÿงฉ

A lightweight, chainable JavaScript class for managing object arrays โ€” like a tiny in-memory database with filtering, transforming, and localStorage support.

---

## ๐Ÿ“ฆ Features

- โœ… Fully **chainable** API (`add`, `update`, `remove`, etc.)
- โœ… Works with **arrays of objects**
- โœ… Filter, find, sort, map, and transform data
- โœ… Easily **save/load** from `localStorage`
- โœ… Schema-based **data validation**
- โœ… Useful for state management, frontend tools, or browser apps

---

## ๐Ÿงช Usage with Data, Functions & Output

### โž• Add Records

```js
const users = new Dom();

users
.add({ id: 1, name: "Alice", role: "admin" })
.add([
{ id: 2, name: "Bob", role: "user" },
{ id: 3, name: "Charlie", role: "guest" }
]);

console.log(users.result());
```

๐Ÿ“ค Output:

```js
[
{ id: 1, name: "Alice", role: "admin" },
{ id: 2, name: "Bob", role: "user" },
{ id: 3, name: "Charlie", role: "guest" }
]
```

---

### โœ๏ธ Update Record

```js
users.update({ role: "editor" }, { id: 2 });
console.log(users.find({ id: 2 }));
```

๐Ÿ“ค Output:

```js
{ id: 2, name: "Bob", role: "editor" }
```

---

### โŒ Remove Record

```js
users.remove({ role: "guest" });
console.log(users.result());
```

๐Ÿ“ค Output:

```js
[
{ id: 1, name: "Alice", role: "admin" },
{ id: 2, name: "Bob", role: "editor" }
]
```

---

### ๐Ÿ” Find & Filter

```js
console.log(users.find({ name: "Alice" }));
console.log(users.filter({ role: "admin" }));
```

๐Ÿ“ค Output:

```js
{ id: 1, name: "Alice", role: "admin" }

[
{ id: 1, name: "Alice", role: "admin" }
]
```

---

### ๐Ÿง  Select Fields

```js
console.log(users.select(["name"]));
```

๐Ÿ“ค Output:

```js
[
{ name: "Alice" },
{ name: "Bob" }
]
```

---

### ๐Ÿ“ˆ Sort by Name

```js
users
.add({ id: 4, name: "Zara", role: "admin" })
.sortBy("name");

console.log(users.result());
```

๐Ÿ“ค Output:

```js
[
{ id: 1, name: "Alice", role: "admin" },
{ id: 2, name: "Bob", role: "editor" },
{ id: 4, name: "Zara", role: "admin" }
]
```

---

### ๐Ÿ”„ Transform with `map()`

```js
users.map(u => ({
...u,
email: `${u.name.toLowerCase()}@example.com`
}));

console.log(users.result());
```

๐Ÿ“ค Output:

```js
[
{ id: 1, name: "Alice", role: "admin", email: "alice@example.com" },
{ id: 2, name: "Bob", role: "editor", email: "bob@example.com" },
{ id: 4, name: "Zara", role: "admin", email: "zara@example.com" }
]
```

---

### ๐Ÿ’พ Save & Load from LocalStorage

```js
users.save("users");

const loaded = new Dom("users");
console.log(loaded.result());
```

๐Ÿ“ค Output:

```js
[
{ id: 1, name: "Alice", role: "admin", email: "alice@example.com" },
{ id: 2, name: "Bob", role: "editor", email: "bob@example.com" },
{ id: 4, name: "Zara", role: "admin", email: "zara@example.com" }
]
```

---

### ๐Ÿงน Clear All Data

```js
users.clear();
console.log(users.result());
```

๐Ÿ“ค Output:

```js
[]
```

---

### โœ… Validate Schema

```js
users
.add({ id: "oops", name: null, role: 999 })
.validate({ id: "number", name: "string", role: "string" })
.log();
```

๐Ÿ“ค Output:

```js
[
{ id: 1, name: "Alice", role: "admin", email: "alice@example.com" },
{ id: 2, name: "Bob", role: "editor", email: "bob@example.com" },
{ id: 4, name: "Zara", role: "admin", email: "zara@example.com" }
]
```

---

## ๐Ÿ“„ License

MIT โ€” Free for personal or commercial use.