mirror of
https://github.com/meteor/meteor.git
synced 2026-05-02 03:01:46 -04:00
59 lines
1.5 KiB
JavaScript
59 lines
1.5 KiB
JavaScript
/**
|
||
* Capitalizes the first letter of the given string.
|
||
*
|
||
* @param {string} str – The input string.
|
||
* @returns {string} – The string with its first character uppercased.
|
||
*/
|
||
export function capitalizeFirstLetter(str) {
|
||
if (typeof str !== 'string' || str.length === 0) {
|
||
return '';
|
||
}
|
||
return str.charAt(0).toUpperCase() + str.slice(1);
|
||
}
|
||
|
||
/**
|
||
* Shuffles the elements of the given array.
|
||
* @param arr
|
||
* @returns {*}
|
||
*/
|
||
function shuffleArray(arr) {
|
||
for (let i = arr.length - 1; i > 0; --i) {
|
||
const j = Math.floor(Math.random() * (i + 1));
|
||
[arr[i], arr[j]] = [arr[j], arr[i]];
|
||
}
|
||
return arr;
|
||
}
|
||
|
||
/**
|
||
* Shuffles the characters of the given string.
|
||
* @param str
|
||
* @returns {string}
|
||
*/
|
||
export function shuffleString(str) {
|
||
return shuffleArray(str.split('')).join('');
|
||
}
|
||
|
||
/**
|
||
* Join an array of strings into a human-readable list.
|
||
*
|
||
* @param {string[]} items - The items to join.
|
||
* @param {object} [opts]
|
||
* @param {string} [opts.separator=', '] - Separator between items (except last).
|
||
* @param {string} [opts.lastSeparator=' and '] - Text to insert before the last item.
|
||
* @returns {string}
|
||
*/
|
||
export function joinWithAnd(
|
||
items,
|
||
{ separator = ', ', lastSeparator = ' and ' } = {},
|
||
) {
|
||
const len = items.length;
|
||
if (len === 0) return '';
|
||
if (len === 1) return items[0];
|
||
if (len === 2) return items[0] + lastSeparator + items[1];
|
||
return items
|
||
.slice(0, -1)
|
||
.reduce((acc, item, idx) => {
|
||
return acc + (idx === 0 ? '' : separator) + item;
|
||
}, '') + lastSeparator + items[len - 1];
|
||
}
|