Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/dgeibi/daify


https://github.com/dgeibi/daify

Last synced: 1 day ago
JSON representation

Awesome Lists containing this project

README

        

# daify

dictify and arrayify

## API

### opts

#### `Object`


opts.by


string: specify the path to get key of a item, example: `id`, `n.id`


function: specify the function to get key of a item, example: item => item.id

opts.include[path]


opts for inner object


path can have dot like opts.by, which specifies the path to a inner array or dict.

#### `string`

shortcut for `opts.by`

### dictify(array, opts)

Make `array` into `dict`

```js
const opts = {
by: "id",
include: {
lists: "id",
"namespace.inners": "id"
}
};

const array = [
{ id: 1, lists: [{ id: 1 }] },
{ id: 2, lists: [{ id: 1 }] },
{
id: 3,
lists: [{ id: 1 }],
namespace: {
inners: [{ id: 1 }, { id: 2 }, { id: 3 }]
}
}
];

log(dictify(array, opts));
/*
{
"1": {
"id": 1,
"lists": {
"1": {
"id": 1
}
}
},
"2": {
"id": 2,
"lists": {
"1": {
"id": 1
}
}
},
"3": {
"id": 3,
"lists": {
"1": {
"id": 1
}
},
"namespace": {
"inners": {
"1": {
"id": 1
},
"2": {
"id": 2
},
"3": {
"id": 3
}
}
}
}
}
*/
```

### arrayify(dict, opts)

Make `dict` into `array`

```js
const opts = {
by: "id", // by is useless here
include: {
lists: "id",
"namespace.inners": "id"
}
};
const dict = {
"1": {
id: 1,
lists: {
"1": { id: 1 }
}
},
"2": {
id: 2,
lists: {
"1": { id: 1 }
}
},
"3": {
id: 3,
lists: { "1": { id: 1 } },
namespace: {
inners: {
"1": { id: 1 },
"2": { id: 2 },
"3": { id: 3 }
}
}
}
};

log(arrayify(dict, opts));
/*
[
{
"id": 1,
"lists": [
{
"id": 1
}
]
},
{
"id": 2,
"lists": [
{
"id": 1
}
]
},
{
"id": 3,
"lists": [
{
"id": 1
}
],
"namespace": {
"inners": [
{
"id": 1
},
{
"id": 2
},
{
"id": 3
}
]
}
}
]
*/
```

## LICENSE

[MIT](LICENSE)