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

https://github.com/igorskyflyer/npm-clone-js

🧬 A NPM wrapper around a lightweight JavaScript utility allowing deep copy-by-value of nested objects, arrays and arrays of objects. πŸͺ
https://github.com/igorskyflyer/npm-clone-js

array back-end biome clone clonejs igorskyflyer javascript js nested-objects node nodejs npm object package typescript vitest wrapper

Last synced: 6 months ago
JSON representation

🧬 A NPM wrapper around a lightweight JavaScript utility allowing deep copy-by-value of nested objects, arrays and arrays of objects. πŸͺ

Awesome Lists containing this project

README

          

![clone.js](https://github.com/igorskyflyer/npm-clone-js/raw/main/assets/clone.js.png)

🧬 A lightweight JavaScript utility allowing deep copy-by-value of nested objects, arrays and arrays of objects. πŸͺ

# npm('clone.js')






πŸ’– Support further development


I work hard for every project, including this one and your support means a lot to me!


Consider buying me a coffee. β˜•


Thank you for supporting my efforts! πŸ™πŸ˜Š





Donate to igorskyflyer




@igorskyflyer






## πŸ•΅πŸΌ Usage

Install it by executing:

```shell
npm i "@igor.dvlpr/node-clone-js"
```


## 🀹🏼 API

### Simple array copy

```javascript
import { clone } from '@igor.dvlpr/node-clone-js'

const firstArray = [1, 2, 3]
const secondArray = clone(firstArray)

secondArray[0] = 5

console.log('firstArray => ', firstArray) // [1, 2, 3]
console.log('secondArray => ', secondArray) // [5, 2, 3]
```

### Complex array (array of objects)

```javascript
import { clone } from '@igor.dvlpr/node-clone-js'

const firstArray = [
{
id: '103',
name: 'Peter',
},
{
id: '214',
name: 'Eve',
},
]
const secondArray = clone(firstArray)

secondArray[0].name = 'John'

console.log('firstArray => ', firstArray)
console.log('secondArray => ', secondArray)
```

### Simple object copy

```javascript
import { clone } from '@igor.dvlpr/node-clone-js'

const firstStudent = {
id: 103,
name: 'Ben',
classes: ['Maths', 'Science', 'English language'],
}

const secondStudent = clone(firstStudent)

secondStudent.classes[0] = 'Psychology'

console.log('firstStudent => ', firstStudent)
console.log('secondStudent => ', secondStudent)
```

### Nested object copy

```javascript
import { clone } from '@igor.dvlpr/node-clone-js'

const firstStudent = {
id: 103,
name: 'Ben',
subjects: {
groupDke: {
science: 'B',
maths: 'C',
},
groupOpe: {
foo: 'bar',
},
},
}

const secondStudent = clone(firstStudent)

secondStudent.subjects.groupDke.maths = 'B'

console.log('firstStudent => ', firstStudent)
console.log('secondStudent => ', secondStudent)
```

---

### Development

```shell
git clone https://github.com/igorskyflyer/npm-clone-js.git

cd npm-clone-js

npm install
```

### Test

```shell
npm test
```

---

## πŸͺͺ License

Licensed under the MIT license which is available here, [MIT license](https://github.com/igorskyflyer/npm-clone-js/blob/main/LICENSE).

---

## 🧬 Related

[@igor.dvlpr/pathexists](https://www.npmjs.com/package/@igor.dvlpr/pathexists)

> _🧲 Provides ways of properly checking if a path exists inside a given array of files/directories both on Windows and UNIX-like operating systems. πŸ—Ί_

[@igor.dvlpr/zep](https://www.npmjs.com/package/@igor.dvlpr/zep)

> _🧠 Zep is a zero-dependency, efficient debounce module. ⏰_

[@igor.dvlpr/valid-path](https://www.npmjs.com/package/@igor.dvlpr/valid-path)

> _🧰 Provides ways of testing whether a given value can be a valid file/directory name. 🏜_

[@igor.dvlpr/my-file-path](https://www.npmjs.com/package/@igor.dvlpr/my-file-path)

> _🌟 An npm module that strongly types file paths! πŸ₯Š_

[@igor.dvlpr/recursive-readdir](https://www.npmjs.com/package/@igor.dvlpr/recursive-readdir)

> _πŸ“– Provides recursive readdir() and readdirSync() functions. πŸ“_




>
> Provided by **Igor Dimitrijević** (*@igorskyflyer*).
>