- slice
- filter
- map
- ...spread
- concat
- Object.assign
let items = [1,2,3];//addlet newItems = [...items, 30];//removevar filtered = newItems.filter( item => item !== 2);//updatelet things = [1,2,3,4,5].map(num => ({id: num}));var i = things.findIndex(item => item.id === 3);var updated = [ ...things.slice(0, i), {id: 33}, ...things.slice(i+1)];var state = {app: {}, items: [1]};//addvar newState = Object.assign({}, state, {app: 2, newThings: 2});// updatevar newState = Object.assign({}, state, {app: 2});var newState = { ...state, app: 2};