2016-07-05 7 views
3

Каков самый короткий способ свести на нет все элементы в массиве javascript с разумной эффективностью?Как отменить все элементы в массиве javascript

Например, решение будет конвертировать [0, 18, -1, -2, 1, 3] в [0, -18, 1, 2, -1, -3]

Решение не нужно обрабатывать любые значения, которые являются NaN/неопределенным/нулевым, так как массив мне нужно это для не содержит какой-либо из этих значений.

Вот что я обычно делаю (с массивом array):

for(var i = 0; i < array.length; i++) { 
    array[i]*=-1 
} 

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

Благодаря

+2

Что вы пробовали? Не должно было быть трудно по крайней мере сделать попытку и показать эту попытку, а не спросить, как это сделать с нуля. – charlietfl

ответ

5

Это было бы array.map возвращения к отрицательному каждому значению. Добавление функции со стрелкой для еще более короткого синтаксиса.

var negatedArray = array.map(value => -value); 
+3

Приятный подход, хотя он дает '-0'. – choz

+0

Есть -0 любой другой, чем 0? – user31415

+1

Нет, это не так. – choz

1

свести на нет все элементы в массиве яваскрипта

Я думаю, что вы имеете в виду отрицать только положительное число.

var _myArray = [0, 18, -1, -2, 1, 3] 
var _invArray = []; 
_myArray.forEach(function(item){ 
    item >0 ?(_invArray.push(item*(-1))) :(_invArray.push(item)) 
}) 
console.log(_invArray); 

JSFIDDLE

+0

Нет, но хорошее решение. '_invArray.push (-Math.abs (item))' тоже мог бы работать, если бы это было то, что я искал – user31415

Смежные вопросы