A Generic Function to Update and Manipulate Object Arrays in TypeScript



While building my newest SaaS product, ReduxPlate, I realized a common pattern kept cropping up in my array manipulation functions. I was always updating a specific value at a specific key, based on a specific test on some other key.


*Plug: Speaking of ReduxPlate, which automatically generates Redux code for you, I’m writing a book that documents every step I took along the way to build ReduxPlate, from boilerplate starters to the finished live product. I’d love it if you check it out! Yes, You’ve read this correctly! I literally build ReduxPlate from start to finish, right before your eyes — and the code is all public!


For example, for the editor widget on the ReduxPlate homepage, I use a stateful array of type IEditorSettings to determine which editor is currently active and what the actual code value is in the editor:

export default interface IEditorSetting {    
    fileLabel: string    
    code: string    
    isActive: boolean
}


Such behavior required me to write two event handlers:


onChangeCode for when the code changes:

const onChangeCode = (code: string) => 
{    
    setEditorSettingsState(editorSettingsState.map(editorSetting => {    
        if (editorSetting.isActive) {         
                editorSetting.code = code    
        }    
    return editorSetting    
    })
)