我有以下数组数组(二维数组)
Input csvData = [["", "2", "", ""], ["", "3", "", ""], ["", "", "4", ""]]
如何从上面的数组中删除空列。
Output csvData = [[ "2", ""], ["3", ""], ["","4"]]
我正在尝试但无法完成。
removeEmptyColumns(csvData) {
for (let i = 0; i < csvData.length; i++) {
let col = csvData.map(function (value, index) { return value[i]; });
for (let j = 0; j < col.length; j++) {
if (col[j])
break;
}
}
}
您可以先获取填充列,然后过滤数组。
var csvData = [["", "2", "", ""], ["", "3", "", ""], ["", "", "4", ""]],
columns = csvData.reduce(
(r, a) => (a.forEach((v, i) => r[i] = r[i] || v), r),
[]
);
csvData = csvData.map(a => a.filter((_, i) => columns[i]));
console.log(csvData);
.as-console-wrapper { max-height: 100% !important; top: 0; }
对于仅删除最后一个空列,您可以获取填充列的最大值并删除其余列。
var csvData = [["", "2", "", ""], ["", "3", "", ""], ["", "", "4", ""]],
max = csvData.reduce(
(r, a) => (a.forEach((v, i) => v && (r = Math.max(r, i))), r),
0
);
csvData = csvData.map(a => a.slice(0, max + 1));
console.log(csvData);
.as-console-wrapper { max-height: 100% !important; top: 0; }
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句