@AlexSer

Как удалить столбец массива, JS?

После чтения данных из CSV файла, получаю 2: Array(324) [ "28.06.2018", "004", "0135569", " ", " " ," "]
и в массиве " " очень много пустых столбцов. т.е весь столбец забит " ", подскажите скрипт для удаления столбцов.
если все элементы столбца массива равны "" удалить столбец.
  • Вопрос задан
  • 1105 просмотров
Решения вопроса 1
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
var data = [
  ['1', '2', '', '3', ''],
  ['2' ,'2', '', '', ''],
  ['3', '1', '', '', ''],
  ['1', '1', '', '1', ''],
  ['', '', '', '2', '']
];
var countColumns = data[0].length; // Ну или как-то по другому посчитаете
var removes = []; // Список номеров пустых колонок
for(var i = 0; i < countColumns; i++) {
   var isRemove = data.every(function(val) { return val[i].length === 0; });
   if(isRemove) {
      removes.push(i); // Добавляем номер колонки
   }
}
// Удаляем колонки и получаем новый массив newData
var newData = data.map(function(val, ind){
    return val.filter(function(val, ind) { return !removes.includes(ind); });
});
console.warn(x);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@vldud
yourArray = yourArray.filter(item => item.length > 0);
Ответ написан
@Ridz
... вариант
var data = [
        ["1", "2", "", "3", ""],
        ["2", "2", "", "", ""],
        ["3", "1", "", "", ""],
        ["1", "1", "", "1", ""],
        ["", "", "", "2", ""]
    ],
    obj = {};
data.forEach(function(el) {
    el.forEach(function(a, i) {
        a.trim() || (obj[i] = (obj[i] || 0) + 1)
    })
});
data = data.map(function(el) {
    return el.filter(function(a, i) {
        return obj[i] != data.length
    })
});
console.log(data)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы