2016-09-15 74 views

回答

4

使用lodash,下面从数组中删除唯一不确定的值:

var array = [ 1, 2, 3, undefined, 0, null ]; 

_.filter(array, function(a){ return !_.isUndefined(a) } 
--> [ 1, 2, 3, 0, null ] 

或者,下面将删除未定义,0和空值:

_.filter(array) 
--> [1, 2, 3] 

如果你想删除阵列中的空值和未定义值,但将值保留为0:

_.filter(array, function(a){ return _.isNumber(a) || _.isString(a) } 
[ 1, 2, 3, 0 ] 
4

不需要适用于拥有现代浏览器的图书馆filter是内置的。

var arr = [ 1, 2, 3, undefined, 0, null ]; 
 
    var updated = arr.filter(function(val){ return val!==undefined; }); 
 
    console.log(updated);

+0

这是使用一个框架(未包含在项目其他原因)时的一个很好的例子是多余。 – Shadow

+0

很好的回答!我认为当在代码库中寻找一致性时,有理由坚持使用Lodash而不是使用polyfills,您是否同意这一点? **注意:**我确实意识到这是添加了'ECMA-262',这是一个相当老的规范版本,所以实际上这不是一个polyfill,可能更像是一个“标准实现”。 –

+0

越来越多的开发者正在从Lodash /下划线移动。浏览器之所以现在支持本地使用该库的东西。除非你支持IE8,否则我怀疑过滤器需要使用polyfill。 – epascarello

33

您可以使用_.compact(array);这将删除nullundefined''

请参见:https://lodash.com/docs/4.15.0#compact

+6

在这种情况下,您的答案是无效的,因为问题指出需要保留空值... – Shadow

+0

正确的,我将编辑推送到该答案以解释并正确引用文档。 '_Compact'将删除'false','null','0','''','undefined'和'NaN'值。 – Markus

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); 
16

使用lodash的最佳方式是_.without

实施例:

const newArray = _.without([1,2,3,undefined,0,null], undefined); 
相关问题