javascript - 如果行的所有元素都不是值(NaN,null,未定义),如何删除数组数组中的行?
问题描述
如果该行的每个元素都不是值,请告诉我如何删除 2D 数组中的整行(如果 NaN 则删除,如果 null 则删除,如果未定义则删除等等......)。如果该行的至少一个元素是数字、字符串、布尔值或任何有意义的值,则将该行的每个元素保留在其位置。
例如,在这个数组中:
var array = [];
array[0] = [];
array[1] = [];
array[2] = [];
array[0][1] = "title";
array[0][2] = NaN;
array[0][3] = 3;
array[1][0] = 0;
array[1][1] = undefined;
array[1][2] = null;
array[1][3] = 3;
array[2][0] = "title";
array[2][1] = 1;
array[2][2] = undefined;
array[2][3] = "url";
console.log(array);
删除数组[0][2]、数组[1][2]、数组[2][2]。预期结果是:
[[未定义,“标题”,3],[0,未定义,3],[“标题”,1,“url”]]
解决方案
您可以先获取列,然后拼接数组。
var array = [
[, "title", NaN, 3],
[0, undefined, null, 3],
["title", 1, undefined, "url"]
],
indices = array
.reduce((r, a) => {
a.forEach((v, i) => r[i] = r[i] || !isNaN(v) && v !== null);
return r;
}, [])
.reduceRight((r, v, i) => (v || r.push(i), r), []);
array.forEach(a => indices.forEach(i => a.splice(i, 1)));
console.log(indices);
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- angularjs - 如何解决 nano (couchdb) Express.js 中的此错误
- java - 如何在 AWS Lambda 中调整 Java 垃圾收集器
- python - PyQt5,QThread:如何在线程中运行非循环函数时保持 GUI 响应?
- vba - 从工作表中的一个单元格计算公式,并将结果粘贴到另一个不同工作表的另一个不同单元格中
- elasticsearch - Elasticsearch 通配符使用
- c# - IQueryable 与 ICollection(列表)
- postgresql - 使用 NULL 参数在 postgresql 函数中编写字符串查询
- python-3.x - Python: read a string and use it to rename the file
- javascript - 如何使用嵌套类更改 web 元素列表中每个项目的 innerHTML
- c# - DataTable checkbox cell does not return null but throws exception when attempting to cast value