如何将数组数组折叠为所有元素的数组
How do I collapse an array of arrays into an array of all the elements?
我有一个形式的数组:[ [ null, 1
, 2, null ], [ 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);
小提琴
假设可能的嵌套数组结构:
var 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]
喜欢这个?
您可以使用 LoDash 库来实现这一点。
_.flatten()
展平嵌套数组(嵌套可以是任意深度)。
_.compact()
创建一个删除所有假值的数组。值为假, null、0、"、undefined 和 NaN 都是假的。
这是示例
var test = [
[null, 1, 2, null],
[9],
[2, null, null]
];
test = _.flatten(test);
test = _.compact(test);
console.log(test)
输出: [1, 2, 9, 2]
相关文章:
- 在函数中添加数组元素的数值
- 访问JSON对象内部的数组元素
- Mongoose-在更新中删除数组元素
- javascript数组元素是否知道其封闭数组
- 将数组元素附加到FormData dos'不适用于Firefox 15
- 如何在javascript中使用click函数选择数组元素
- 如何在JavaScript中剥离数组元素中的非整数
- 消隐数组元素是否生成自己的属性
- 如何使一个Math.random数组元素比另一个数组元素更有可能被选中
- 在Codrops的内容中添加数组元素展开缩略图网格预览
- 如何使用Jquery水平打印表中的数组元素,并在某个元素之后垂直打印
- 如何访问数组中的数组元素(JavaScript)
- 生成ACF标记位置的数组(元素列表后缺少])
- validate.js验证数组元素
- JavaScript Unshift EACH 数组元素
- 如何在加号运算符之后选择数组元素的一部分
- 访问标记图标的图像数组元素
- JavaScript 合并相同的数组元素
- 删除仅空格数组元素
- JavaScript闭包和返回数组元素