Ответ 1
Вы можете использовать _.compact(array);
Создает массив со всеми удаленными значениями Falsey. Значения false, null, 0, "", undefined и NaN являются ложными.
Смотрите: https://lodash.com/docs/4.15.0#compact.
В javascript я хочу удалить значения undefined, но сохраняю значения 0 и null из массива.
[ 1, 2, 3, undefined, 0, null ]
Как я могу сделать это чисто?
Вы можете использовать _.compact(array);
Создает массив со всеми удаленными значениями Falsey. Значения false, null, 0, "", undefined и NaN являются ложными.
Смотрите: https://lodash.com/docs/4.15.0#compact.
Лучший способ использования lodash - _. без
Пример:
const newArray = _.without([1,2,3,undefined,0,null], undefined);
Нет необходимости в библиотеках с современными браузерами. фильтр встроен
var arr = [ 1, 2, 3, undefined, 0, null ];
var updated = arr.filter(function(val){ return val!==undefined; });
console.log(updated);
С lodash вы можете сделать просто:
var filtered = _.reject(array, _.isUndefined);
Если вы также хотите отфильтровать как null
так и undefined
в какой-то момент:
var filtered = _.reject(array, _.isNil);
Используя lodash, удалите из массива только значения undefined:
var array = [ 1, 2, 3, undefined, 0, null ];
_.filter(array, function(a){ return !_.isUndefined(a) }
--> [ 1, 2, 3, 0, null ]
Или, ниже будут удалены значения undefined, 0 и null:
_.filter(array)
--> [1, 2, 3]
И если вы хотите удалить значения из null и undefined из массива, но сохраните значения равными 0:
_.filter(array, function(a){ return _.isNumber(a) || _.isString(a) }
[ 1, 2, 3, 0 ]
Вы можете попробовать это.
var array = [ 1, 2, 3, undefined, 0, null ];
var array2 = [];
for(var i=0; i<array.length; i++){
if(!(typeof array[i] == 'undefined')){
array2.push(array[i]);
}
}
console.log(array2);
Решение Vanilla JS: используя ===
, вы можете проверить, является ли значение на самом деле undefined
и не falsy
.
Оба фрагмента ниже приведут вам массив с [1, 2, 3, 0, null]
.
Оба изменяют исходный массив.
// one liner - modifies the array in-place
[ 1, 2, 3, undefined, 0, null ].forEach( function(val, i, arr){
if(val===undefined){arr.splice(i,1)}; // remove from the array if actually undefined
});
// broken up for clarity - does the same as the above
var myarray = [ 1, 2, 3, undefined, 0, null ];
myarray.forEach( function(val, i, arr){
if(val===undefined){arr.splice(i,1)};// remove from the array if actually undefined
});
console.log(myarray );
Фильтруйте данный массив для элементов, не равных неопределенному.
const initialArray = [ 1, 2, 3, undefined, 0, null ];
const finalArray = initialArray.filter(element => element !== undefined);
const finalArray = initialArray.filter(i => Boolean(i))
С помощью метода фильтра ES6 Array #
array.filter(item => item !== undefined)