UNPKG

@snipsonian/core

Version:

Core/base reusable javascript code snippets

26 lines (21 loc) 672 B
import getArrayCopy from '../getArrayCopy'; export interface IAddOrRemoveItemsFromArrayCommonOptions { resultInNewArray?: boolean; addIfAlreadyPresent?: boolean; // default true } export default function addItemAndGetResultingArray<Item = unknown>( arr: Item[], itemToAdd: Item, { resultInNewArray = false, addIfAlreadyPresent = true, }: IAddOrRemoveItemsFromArrayCommonOptions = {}, ): Item[] { const resultArray = resultInNewArray ? getArrayCopy<Item>(arr) : arr || []; if (addIfAlreadyPresent || !resultArray.includes(itemToAdd)) { resultArray.push(itemToAdd); } return resultArray; }