Sre*_*ddy 0 javascript csv arrays multidimensional-array data-structures
我有以下数组数组(二维数组)
Input csvData = [["", "2", "", ""], ["", "3", "", ""], ["", "", "4", ""]]
Run Code Online (Sandbox Code Playgroud)
如何从上面的数组中删除空列。
Output csvData = [[ "2", ""], ["3", ""], ["","4"]]
Run Code Online (Sandbox Code Playgroud)
我正在尝试但无法完成。
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以先获取填充的列,然后过滤数组。
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);Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }Run Code Online (Sandbox Code Playgroud)
要仅删除最后一个空列,您可以获取填充列的最大值并删除其余的。
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);Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }Run Code Online (Sandbox Code Playgroud)