Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Многомерные массивы (удаление элементов) (https://javascript.ru/forum/misc/77078-mnogomernye-massivy-udalenie-ehlementov.html)

fcsm_andrei 22.03.2019 11:37

Многомерные массивы (удаление элементов)
 
Здравствуйте, как можно удалить пустые элементы многомерного массива, и, если массив окажется пустым, его тоже соответственно удалить?
Допустим дан массив
arr = [[1, empty, 3, 4, 5, empty], [empty, 2, 3, 4, 5 ,234, empty], [empty, empty, empty, empty]].

Dilettante_Pro 22.03.2019 13:09

var empty = null;
var arr = [[1, empty, 3, 4, 5, empty], [empty, 2, 3, 4, 5 ,234, empty], [empty, empty, empty, empty]];
for(var i = arr.length - 1; i > -1; i--) {
    for(var j = arr[i].length - 1; j > -1; j--) {
        if(!arr[i][j]) arr[i].splice(j,1);
    }
    if(arr[i].length == 0) arr.splice(i,1);
}
alert(JSON.stringify(arr));

рони 22.03.2019 13:10

fcsm_andrei,
let arr = [[1, , 3, 4, 5, ], [, 2, 3, 4, 5 ,234, ], [, , , ]];
function f(c) {
    return c.reduce(function(b, a) {
        Array.isArray(a) ? (a = f(a), a.length && b.push(a)) : void 0 !== a && b.push(a);
        return b;
    }, []);
};

let c = f(arr);
console.log(c)

SuperZen 22.03.2019 14:13

let arrs = [[1, , 3, 4, 5,], [, 2, 3, 4, 5, 234,], [, , ,]];
console.log(
  arrs.reduce((acc, cur) => {
    let items = cur.filter(item => item !== null)
    items.length && acc.push(items)
    return acc
  }, [])
)

почты прочую обяза ниже. 23.03.2019 14:52

arr.map(i => i.filter(j => j !== null)).filter(k => k.length)


Часовой пояс GMT +3, время: 21:54.