# Javascript basic algorithms

If you are working javascript then you need to understand these basic algorithm because these algorithm are very useful in your daily programming life.

Get uniq from array

``````
// get uniq from array
const nums = [1, 2, 1, 1, 2, 1, 3, 4, 1 ];
const uniq = [...new Set(numbers)]; // => [ 1, 2, 3, 4 ]
const uniq2 = Array.from(new Set(numbers)); // => [ 1, 2, 3, 4 ]
``````

Update an array object by property

``````
// update an object in array by property
const initial = [ {id: 1, score: 1}, {id: 2, score: 2}, {id: 3, score: 4}];
const newVal = {id: 3, score: 3};
const updated = initial.map(x => x.id === newVal.id ? newVal : x);
console.log(updated); // => [ { id: 1, score: 1  }, { id: 2, score: 2  }, { id: 3, score: 3  }  ]
``````

Remove an object from array by property

``````
// remove object from array by property
const removeId = 3;
const without3 = initial.filter(x => x.id !== removeId);
console.log(without3); // => [ { id: 1, score: 1  }, { id: 2, score: 2  }  ]
``````

Remove a key from an object

``````
var a = {
foo: 'bar',
useful: 1,
useless: 2
}

const {useless, ...clean} = a;
console.log(clean); // => {foo: 'bar', useful: 1}
``````

Merge an array of objects together

``````
// merge an array of objects
const data = [ {a: 1}, {b: 2}, {c: 3} ];
const merged = data.reduce((res, obj) => ({...res, ...obj}), {});
console.log(merged); // => { a: 1, b: 2, c: 3  }
``````

Flatten

``````
// flatten an array of arrays
const arrayOfArray = [ [1, 2], [3, 4], [[5, 6]] ];
const flattened = arrayOfArray.reduce((res, a) => [...res, ...a], [] );
console.log(flattened); // => [1, 2, 3, 4, [5, 6]]
``````

Subtract two Sets

``````
// subtract two sets
const s1 = [ 1, 2, 3, 4, 5 ];
const s2 = [ 2, 4 ];
const subtracted = s1.filter(x => s2.indexOf(x) < 0);
console.log(subtracted);
```
```