@snipsonian/core
Version:
Core/base reusable javascript code snippets
26 lines (21 loc) • 672 B
text/typescript
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;
}