function shortNumber(val) {
const degree = Math.floor(Math.log10(val) / 3);
const suffix = ['', ' тыс.', ' млн', ' млрд'][degree];
const num = val / (10 ** (degree * 3));
return `${num.toFixed(num >= 10 ? 0 : 1)}${suffix}`;
}
shortNumber(123); // "123"
shortNumber(12345); // "12 тыс."
shortNumber(1234567); // "1.2 млн"
JavaScript RegExp objects are stateful when they have the global or sticky flags set (e.g., /foo/g or /foo/y). They store a lastIndex from the previous match. Using this internally, test() can be used to iterate over multiple matches in a string of text (with capture groups).Кратко - с опциями g и y объект RegExp сохраняет позицию, с которой продолжает поиск при следующем вызове. У вас одинаковые строки и второй вызов начинает с позиции, на которой закончился первый вызов, то есть уже после '.mp3'.
countCookies(3, 6, [0, 0, 0]); // 1
countCookies(3, 2, [0, 2, 2]); // 0
- const allCookies = cookies.reduce((sum, acc) => sum + acc, 0);
- let maxCookies = Number(Math.max.apply(null, cookies));
+ const maxCookies = Math.max(...cookies);
- let sum = cookies.reduce((acc, c) => acc + Math.floor((c + K - 1) / K), 0);
+ const sum = cookies.reduce((acc, c) => acc + Math.ceil(c / K), 0);
$("#address").suggestions(...)
, то плагин навешивает на элемент свои скрипты и, возможно, дополнительные элементы DOM. А уже в этих скриптах по событию onSelect вызывается каллбэк-функция, в которую передаётся suggestion.