С помощью Java 8 вы можете использовать новый removeIf
метод . Применимо к вашему примеру:
Collection coll = new ArrayList();
//populate
coll.removeIf(i -> i.intValue() == 5);
r = +_;
+
пытается отличить любое число _
от числа. _
- это только имя переменной (а не оператор), это может быть a
, foo
и т. д. Пример:
+"1"
отличить «1» до чистого номера 1.
var _ = "1";
var r = +_;
r
теперь 1
, а не "1"
.
Кроме того, согласно странице MDN по арифметическим операторам :
Унарный плюс оператор предшествует своему операнду и оценивает его операнд, но пытается преобразовать его в число, если оно еще не было. [...] Он может преобразовывать строковые представления целых чисел и чисел с плавающей точкой, а также нестроковые значения
blockquote>true
,false
иnull
. Поддерживаются целые числа в десятичных и шестнадцатеричных форматах ("0x"
-prefixed). Отрицательные числа поддерживаются (хотя и не для hex). Если он не может разобрать конкретное значение, он будет оценивать значениеNaN
.Также отмечается, что
унарный плюс является самым быстрым и предпочтительным способом преобразования чего-то в число
blockquote>
Будет присвоено новое значение левой стороне переменной.
var a=10;
var b="asg";
var c=+a;//return 10
var d=-a;//return -10
var f="10";
var e=+b;
var g=-f;
console.log(e);//NAN
console.log(g);//-10
В этом выражении:
r = +_;
_
останется «1», если он был первоначально, но r
станет чистым номером. Рассмотрите эти случаи, хотите ли вы применить + для числового преобразования
+"-0" // 0, not -0
+"1" //1
+"-1" // -1
+"" // 0, in JS "" is converted to 0
+null // 0, in JS null is converted to 0
+undefined // NaN
+"yack!" // NaN
+"NaN" //NaN
+"3.14" // 3.14
var _ = "1"; +_;_ // "1"
var _ = "1"; +_;!!_ //true
var _ = "0"; +_;!!_ //true
var _ = null; +_;!!_ //false
Хотя, это самый быстрый цифровой конвертер, я вряд ли рекомендовал бы его чрезмерно использовать, если вообще его использовать. parseInt/parseFloat
являются более читаемыми альтернативами.
+_
почти эквивалентен parseFloat(_)
. Обратите внимание, что parseInt
остановится на не числовом символе, таком как точка, тогда как parshFloat
не будет.
EXP:
parseFloat(2.4) = 2.4
vs
parseInt(2.4) = 2
vs
+"2.4" = 2.4
Exp:
var _ = "3";
_ = +_;
console.log(_); // will show an integer 3
Очень немного отличий:
""
оценивает значение 0
, в то время как parseInt () оценивает значение NaN
parseInr(_)
вместо parseFloat(_)
?
– Grijesh Chauhan
20 July 2013 в 10:11
float
, потому что parseInt остановится на не числовом символе, parshFloat не будет. EXP: parseFloat(2.4) = 2.4
vs parseInt(2.4) = 2
.
– Brian
20 July 2013 в 10:58
Проще говоря, +_
эквивалентно с использованием конструктора Number () .
Фактически, он даже работает с датами:
var d = new Date('03/27/2014');
console.log(Number(d)) // returns 1395903600000
console.log(+d) // returns 1395903600000
DEMO: http://jsfiddle.net/dirtyd77/GCLjd/
Дополнительная информация также может быть найдена on MDN - раздел Unary plus (+) :
Оператор унарного плюса предшествует своему операнду и вычисляет его операнд, но пытается преобразовать его в число, если оно еще не , Хотя унарное отрицание (-) также может конвертировать не числа, унарный плюс является самым быстрым и предпочтительным способом преобразования чего-либо в число, поскольку он не выполняет никаких других операций над номером. Он может преобразовывать строковые представления целых чисел и float, а также значения, отличные от строки, true, false и null. Поддерживаются целые числа в десятичных и шестнадцатеричных форматах («0x» -предоставляемые). Отрицательные числа поддерживаются (хотя и не для hex). Если он не может разобрать определенное значение, он будет оценивать NaN.
blockquote>
=+
- фактически два оператора =
- назначение, а +
и _
- имя переменной.
like:
i = + 5;
or
j = + i;
or
i = + _;
Мои следующие коды помогут вам показать использование =+
для преобразования строки в int . Например:
y = +'5'
x = y +5
alert(x);
выходы 10
use: Таким образом, здесь y
является int 5
из-за =+
в противном случае:
y = '5'
x = y +5
alert(x);
выходы 55
Где в качестве _
является переменной.
_ = + '5'
x = _ + 5
alert(x)
выходов 10
Кроме того, было бы интересно узнать, что вы также можете достичь того же с помощью ~
(если строка int string (float будет раундом от int) )
y = ~~'5' // notice used two time ~
x = y + 5
alert(x);
также выдает 10
~
побитовое NOT: инвертирует биты его операнда , Я делал дважды без каких-либо изменений в величине.
x|0
для преобразования double в int; однако это, а также использование «~» имеет штраф за ограничение чисел & lt; 2 ^ 32. + & Quot; 2e15 & Quot; не.
– Aki Suihkonen
1 March 2013 в 08:36
x|0
еще быстрее, чем +
. Правильно ? хорошая техника :). (2) Я использую ~
, чтобы показать OP, что +
- это не только знак, который можно использовать ( i я использую +
i>).
– Grijesh Chauhan
1 March 2013 в 08:39
|
намного быстрее.
– Tapirboy
1 March 2013 в 15:31
= + _ будет отличать _ в число.
Итак,
var _ = "1",
r = +_;
console.log(typeof r)
выведет номер.
Я полагаю, вы имеете в виду r = +_;
? В этом случае это преобразование параметра в Number
. Скажем, _
- '12 .3 ', затем +'12.3'
возвращает 12.3
. Поэтому в цитируемом заявлении +_
присваивается значение r
.
Это не =+
. В javascript +
означает, что +
возвращает его в число.
+'32'
возвращает 32.
+'a'
возвращает NaN.
Таким образом, вы можете использовать isNaN()
, чтобы проверить, можно ли его изменить на номер.
_
- это просто имя переменной, переданное как параметр функции hexbin.radius
и +
, переданное в число
. Позвольте мне сделать так же, как и ваша функция.
var hexbin = {},r ;
hexbin.radius = function(_) {
if (!arguments.length)
return r;
console.log( _ , typeof _ )
r = +_;
console.log( r , typeof r , isNaN(r) );
}
и запустить эту примерную функцию, которая выводит
hexbin.radius ("1");
1 string
1 number false
hexbin.radius (1);
1 number
1 number false
hexbin.radius ([]);
[] object
0 number false
hexbin.radius ('a');
a string
NaN number true
hexbin.radius ( {});
Object {} object
NaN number true
hexbin.radius (true);
true boolean
1 number false
Это подлый.
Важно понять, что символ подчеркивания здесь - это имя переменной, а не оператор.
Знак плюса перед этим получает положительное числовое значение подчеркивания, т. е. эффективно отличает переменную подчеркивания как int. Вы могли бы добиться такого же эффекта с помощью parseInt()
, но, вероятно, использование знака плюса используется здесь, потому что оно более кратким.
И это просто оставляет знак равенства как стандартное присвоение переменной.
Наверное, не намеренно путать, поскольку опытный Javascript-программист обычно распознает подчеркивание как переменную. Но если вы не знаете, что это определенно очень запутанно. Я, конечно, не писал бы так; Я не являюсь поклонником коротких бессмысленных имен переменных в лучшие моменты времени. Если вы хотите, чтобы короткие имена переменных в JS-коде сохранялись, используйте minifier; не начинайте писать с короткими переменными.
_
является переменной.
– TRiG
28 February 2013 в 15:53
Это не оператор присваивания.
_
- это просто параметр, переданный функции. hexbin.radius = function(_) {
// ^ It is passed here
// ...
};
r = +_;
+
infront переводит эту переменную (_
) в числовое или целочисленное значение и присваивает ее переменной r
НЕ УСТАНАВЛИВАЙТЕСЬ с оператором +=
+_
действительно означает0+_
, и в этом случае_
нужно передать перед добавлением в 0? – colincameron 28 February 2013 в 12:06+'12' === 12
(результат - число), но0 + '12' === '012'
(результат - строка). Обратите внимание, однако, что0 - '12' === -12
. – Kobi 28 February 2013 в 12:58