如何删除包含所有空值的数组列
How can I remove array columns with all null values?
假设我有这个数组,
[
["First", "Second", "Third", "Fourth", "Fifth", "Sixth", "Seventh"],
["A" , 1 , 2 , 3 , 4 , 5 , null ],
["B" , 1 , 2 , null , null , 5 , null ],
["C" , null , 2.5 , 3 , 4 , 5 , null ],
]
现在,它是字符串、整数、浮点数/双精度数和空值的混合。在最后一列中,每个值都是空的,我需要删除该列(忽略第一行不为空的事实)。
我能想到的唯一方法是遍历整个数组(和子数组),并为每列保留一个布尔值,说明是否所有值都是 null,然后再次遍历它,如果列完全为 null,则删除索引。
这对我来说似乎效率很低,我想知道是否有更好的方法可以做到这一点。
只是为了让你有一个想法,输出数组,需要这样。
[
["First", "Second", "Third", "Fourth", "Fifth", "Sixth"],
["A" , 1 , 2 , 3 , 4 , 5 ],
["B" , 1 , 2 , null , null , 5 ],
["C" , null , 2.5 , 3 , 4 , 5 ],
]
// The "Seventh" column was removed due to all it's values being null.
我将设置一个 jsfiddle 示例,完成后我将编辑链接。
这是我对循环想法的粗略概念证明。
这样的东西应该可以解决问题
function remove(arr) {
var toRemove = Array.apply(null, new Array(arr[0].length)).map(function(_, i){return i;});
arr.slice(1).forEach(function(row){
toRemove = toRemove.filter(function(index){//filter only values that left
return row[index] === null;
});
});
return arr.map(function(row){
return row.filter(function(_, i){
return toRemove.indexOf(i) < 0;
});
});
}
相关文章:
- Lodash 从值数组中查找数组中的值
- 使用Undercore获取属性值数组
- 选择具有值数组的所有元素的最有效方法
- 使用jquery grep过滤具有值数组的json对象
- 如何使用JQuery将值数组插入到数据库中
- 创建属性值数组,其中属性名称以特定字符串结尾
- 如何在jqueryajax中发布值数组
- 如何在不赋值数组变量的情况下读取数组数据
- Lodash 从与值数组不匹配的数组中获取项目
- 下划线,将对象列表转换为对象值数组
- 将键/值数组中的对象与另一个对象(键/值)进行比较
- 使用Node中的Q promise库对值数组顺序调用/执行相同的函数;并返回带有结果的新数组/集合
- 创建一个计算值数组,该数组绑定到AngularJS中的其他输入
- 将JavaScript对象转换为值数组
- 将选定值数组发送到控制器-MVC
- 将键、值对象转换为仅值数组
- 如何将JSON数组转换为键值数组
- 使用一个键的值数组过滤多个javascript对象
- $scope绑定到空值数组 AngularJs
- 根据另一个值数组过滤一个对象数组,返回一个空列表