我有一个数组形式为:[[null,1,2,null],[9],[2,null,null]]
我想要一个简单的函数来返回[1,2,9,2],其中,如您所见,消除了 null。
我需要这个是因为数据库中的一些值以此形式返回,我将使用例子返回但不包含 null 来查询。
谢谢!
我想要一个简单的函数来返回[1,2,9,2],其中,如您所见,消除了 null。
我需要这个是因为数据库中的一些值以此形式返回,我将使用例子返回但不包含 null 来查询。
谢谢!
var arr = [ [ null, 1, 2, null ], [ 9 ], [ 2, null, null ] ],
arr2 = [];
arr2 = (arr2.concat.apply(arr2, arr)).filter(Boolean);
undefined
,0
和任何falsy值,这不是您要求的;您可能需要用n !== null
替换!!n
。 - Dan Heberden.filter(Boolean)
。 - user2736012n
)作为参数调用 Boolean()
函数,而 Boolean(null)
评估为假,因此它被过滤器排除了。 - adeneovar reduce = function(thing) {
var reduction = [];
// will be called for each array like thing
var loop = function(val) {
// an array?
if (val && typeof val === 'object' && val.length) {
// recurse that shi•
reduction = reduction.concat(reduce(val));
return;
}
if (val !== null) {
reduction.push(val);
}
};
thing.forEach(loop);
return reduction;
};
reduce([ [ null, 1, 2, null ], [ 9 ], [ 2, null, null ] ]);
// [1, 2, 9, 2]
reduce([1, 3, 0, [null, [undefined, "what", {a:'foo'}], 3], 9001]);
// [1, 3, 0, undefined, "what", Object, 3, 9001]
像这样吗?
null
吗?这个数组是否总是仅有一层深度? - jamesplease