es-toolkit
Version:
A state-of-the-art, high-performance JavaScript utility library with a small bundle size and strong type annotations.
22 lines (21 loc) • 887 B
JavaScript
import { sample as sample$1 } from "../../array/sample.mjs";
import { toArray } from "../_internal/toArray.mjs";
import { isArrayLike } from "../predicate/isArrayLike.mjs";
//#region src/compat/array/sample.ts
/**
* The implementation for the overloaded sample function.
*
* This function takes an array, string, or object and returns a single element selected randomly.
* If the input is empty, or if it's null or undefined, the function returns `undefined`.
*
* @template T - The type of elements in the collection.
* @param collection - The collection to sample from.
* @returns A random element from the collection, or `undefined` if the collection is empty or invalid.
*/
function sample(collection) {
if (collection == null) return;
if (isArrayLike(collection)) return sample$1(toArray(collection));
return sample$1(Object.values(collection));
}
//#endregion
export { sample };