Есть ли способ уменьшить избыточность в троичном операторе, повторно используя условный операнд в истинном операнде - PullRequest
0 голосов
/ 09 апреля 2020

В следующем коде:

let sum = (sum, num) => sum + num;
let largest = (largest, current) => largest < current.reduce(sum, 0) ? current.reduce(sum, 0) : largest; 
function largestOfFour(arr) {
    return arr.reduce(largest, 0)
}
    console.log(largestOfFour([[4, 5, 1, 3], [1000, 1001, 857, 1], [13, 27, 18, 26], [32, 35, 37, 39]]));

У меня каждый массив суммируется в уменьшении, а затем сравнивается с наибольшей текущей суммой массива. Что я пытаюсь выяснить, так это если Я могу перенести оценку, использованную в последней части условного операнда, на истинный операнд между "?" и ":"

current.reduce(sum, 0)

я надеюсь на следующее:

let largest = (largest, current) => largest < current.reduce(sum, 0) ?: largest; 

Попытка дальнейшего понимания ограничений и возможностей троичного в частности. Я почти уверен, что использовал троичный в другом языке, где я мог просто оставить второй операнд пустым, и первый операнд был бы передан в возвращаемое значение. Возможно, это не для JS, или, может быть, я ограничен тем фактом, что у меня есть условное вычисление без сохранения второй его части для дальнейшего использования.

Я знаю, что это может не улучшить читаемость, а вычислительные затраты на оценку дважды незначительны. Это только я исследую все входы и выходы.

Я использовал MDN, w3schools и ряд других ресурсов, и я предполагаю, что я не видел, чтобы это реализовывалось там, что это невозможно, но любопытно, если кто-то может указать меня в правильном направлении или покажи мне, как сделать эту работу

...