Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сократить x > 0 ? 1 : (x < 0 ? -1 : 0) (https://javascript.ru/forum/misc/41037-kak-sokratit-x-0-1-x-0-1-0-a.html)

danik.js 29.08.2013 09:16

Как сократить x > 0 ? 1 : (x < 0 ? -1 : 0)
 
В F# есть для этого функция Math.sign(x).
Функция должна работать так:

function sign(x) {
    if (x > 0)
        return +1;
    if (x < 0)
        return -1;
    return 0;
}

ruslan_mart 29.08.2013 10:28

danik.js, можно так :)

function sign(x) {
   return x/Math.abs(x)|0;
}


Или так:

function sign(x) {
   return x < 0 ? -1 : +!!x;
}

tenshi 29.08.2013 18:44

function sign(x){
    return x && ( x >> 31 ) * 2 + 1
}

animhotep 29.08.2013 18:51

магийа)

BallsShaped 29.08.2013 19:38

tenshi, почему не return x && ( x >> 31 || 1 )? Разве нельзя обойтись без арифметических операций?

danik.js 30.08.2013 05:02

Вариант с Math.abs отличный. А зачем там |0 ?

Riim 30.08.2013 05:28

Одного не понимаю - зачем???

danik.js 30.08.2013 05:54

Riim, что зачем?
На входе получаем некое число, положительное, 0 или отрицательное, на выходе нужно иметь +1, 0 или -1

danik.js 30.08.2013 06:22

Хотя вроде бы мне это действительно не нужно )
Я мучаюсь с событием WheelEvent. Мне нужно кроссбраузерно получать значение дельт при прокрутке.

Riim 30.08.2013 09:43

Цитата:

Сообщение от danik.js
что зачем?

зачем сокращать? Чем плох нормальный вариант записи?


Часовой пояс GMT +3, время: 01:33.