22.03.2019, 11:37
|
Новичок на форуме
|
|
Регистрация: 14.02.2019
Сообщений: 5
|
|
Многомерные массивы (удаление элементов)
Здравствуйте, как можно удалить пустые элементы многомерного массива, и, если массив окажется пустым, его тоже соответственно удалить?
Допустим дан массив
arr = [[1, empty, 3, 4, 5, empty], [empty, 2, 3, 4, 5 ,234, empty], [empty, empty, empty, empty]].
|
|
22.03.2019, 13:09
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
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
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,132
|
|
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)
|
|
22.03.2019, 14:13
|
|
Профессор
|
|
Регистрация: 08.11.2017
Сообщений: 641
|
|
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
}, [])
)
Последний раз редактировалось SuperZen, 22.03.2019 в 14:14.
Причина: hohoho
|
|
23.03.2019, 14:52
|
|
Интересующийся
|
|
Регистрация: 23.03.2019
Сообщений: 11
|
|
arr.map(i => i.filter(j => j !== null)).filter(k => k.length)
|
|
|
|