Добавление / изменение свойств объекта и возвращение его в той же строке - возможный вариант использования:
console.log(
((x) => (o = {biggerCond: r => r >= x},
o.r5 = Array.from(window.crypto.getRandomValues(new Uint16Array(5))),
o.isAnyBigger = o.r5.some(o.biggerCond),
o.bigger = o.isAnyBigger ? o.r5.filter(o.biggerCond) : [x], o )
)(5e4)
);
// Example
// {
// bigger: [58414, 56500, 63397],
// isAnyBigger: true,
// isBiggerCond: r => r >= x,
// r5: [58414, 12015, 56500, 63397, 43861]
// }
Приведенная выше анонимная функция возвращает объект со случайными значениями, большими, чем входное значение, или, если его нет, с самим входным значением в массиве, содержащемся в bigger
property.
Это все еще синтаксический сахар (например, функции стрелок ), но он сокращает количество строк ... Интересно, обнаруживают ли некоторые JS-минификаторы и корректируют ли код вПохожий способ автоматически.Запустите его в своей консоли:
((x)=>(o={biggerCond:r=>r>=x},o.r5=Array.from(window.crypto.getRandomValues(new Uint16Array(5))),o.isAnyBigger=o.r5.some(o.biggerCond),o.bigger=o.isAnyBigger?o.r5.filter(o.biggerCond):[x],o))(5e4)