mUpdate
mUpdate
(mapperFns: MapperFns) => (collection: EntryCollection) => collection
Update matching entries via mapper functions
Consider update instead.
This is for the uncommon case where mutatingcollection
is required.const obj = { a: 1, b: 2, c: 3 } const inc = n => n + 1 const dec = n => n - 1 const updateAandC = mUpdate({ a: inc, c: dec }) const mutatedObj = updateAandC(obj) console.log(mutatedObj === obj) // is true console.log(obj) // is { // a: 2 // b: 2 // c: 2 // }
const obj = { a: 1, b: 2, c: 3 } const inc = (n: number) => n + 1 const dec = (n: number) => n - 1 const updateAandC = mUpdate({ a: inc, c: dec }) const mutatedObj = updateAandC(obj) console.log(mutatedObj === obj) // is true console.log(obj) // is { // a: 2 // b: 2 // c: 2 // }
const obj = { a: 1, b: 2, c: 3 } const inc = n => n + 1 const dec = n => n - 1 const updateAandC = mUpdate({ a: inc, c: dec }) const mutatedObj = updateAandC(obj) console.log(mutatedObj === obj) // is true console.log(obj) // is { // a: 2 // b: 2 // c: 2 // }
const obj = { a: 1, b: 2, c: 3 } const inc = (n: number) => n + 1 const dec = (n: number) => n - 1 const updateAandC = mUpdate({ a: inc, c: dec }) const mutatedObj = updateAandC(obj) console.log(mutatedObj === obj) // is true console.log(obj) // is { // a: 2 // b: 2 // c: 2 // }
Sometimes we want to mutate entries by updating their values. Below, we are coding a gifting feature on our audiobook platform. Let's test it by gifting Cat's Cradle to Luke.
const friend = { name: 'luke', books: ['Player Piano'], } const addCatsCradle = mAppendOne("Cat's Cradle") const giftCatsCradleTo = mUpdate({ books: addCatsCradle }) giftCatsCradleTo(friend) console.log(friend) // is { // name: luke // books: [Player Piano, Cat's Cradle] // }
type Account = { name: string books: string[] } const friend: Account = { name: 'luke', books: ['Player Piano'], } const addCatsCradle = mAppendOne("Cat's Cradle") const giftCatsCradleTo = mUpdate({ books: addCatsCradle })<Account> giftCatsCradleTo(friend) console.log(friend) // is { // name: luke // cart: [cozy gloves, alligator socks // }
const friend = { name: 'luke', books: ['Player Piano'], } const addCatsCradle = mAppendOne("Cat's Cradle") const giftCatsCradleTo = mUpdate({ books: addCatsCradle, }) giftCatsCradleTo(friend) console.log(friend) // is { // name: luke // books: [Player Piano, Cat's Cradle] // }
type Account = { name: string books: string[] } const friend: Account = { name: 'luke', books: ['Player Piano'], } const addCatsCradle = mAppendOne("Cat's Cradle") const giftCatsCradleTo = mUpdate({ books: addCatsCradle, })<Account> giftCatsCradleTo(friend) console.log(friend) // is { // name: luke // cart: [cozy gloves, alligator socks // }
An array or map of
mapperFns
can only update a respective array or map. An object, on the other hand, can update any EntryCollection.Below shows the array validation.
const inc = n => n + 1 const dec = n => n - 1 const updateFirstTwo = mUpdate([inc, dec]) const arr = [1, 5, 3] updateFirstTwo(arr) console.log(arr) // is [2, 4, 3] const obj = { a: 1 } try { updateFirstTwo(obj) } catch (err) { console.log(err) // prints // mUpdate requires argument 'collection' to be an array since you passed an // array for 'mapperFns' }
const inc = (n: number) => n + 1 const dec = (n: number) => n - 1 const updateFirstTwo = mUpdate([inc, dec]) const arr = [1, 5, 3] updateFirstTwo(arr) console.log(arr) // is [2, 4, 3] const obj = { a: 1 } updateFirstTwo(obj) // ts requires an array
const inc = n => n + 1 const dec = n => n - 1 const updateFirstTwo = mUpdate([inc, dec]) const arr = [1, 5, 3] updateFirstTwo(arr) console.log(arr) // is [2, 4, 3] const obj = { a: 1 } try { updateFirstTwo(obj) } catch (err) { console.log(err) // prints // mUpdate requires argument 'collection' to be // an array since you passed an array for // 'mapperFns' }
const inc = (n: number) => n + 1 const dec = (n: number) => n - 1 const updateFirstTwo = mUpdate([inc, dec]) const arr = [1, 5, 3] updateFirstTwo(arr) console.log(arr) // is [2, 4, 3] const obj = { a: 1 } updateFirstTwo(obj) // ts requires an array