Многомерные массивы (удаление элементов)
Здравствуйте, как можно удалить пустые элементы многомерного массива, и, если массив окажется пустым, его тоже соответственно удалить?
Допустим дан массив arr = [[1, empty, 3, 4, 5, empty], [empty, 2, 3, 4, 5 ,234, empty], [empty, empty, empty, empty]]. |
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)); |
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) |
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 }, []) ) |
arr.map(i => i.filter(j => j !== null)).filter(k => k.length) |
Часовой пояс GMT +3, время: 07:03. |