преобразование массива, Как удалить свойство обьекта, если все поля пустые?
Есть массив вида:
let objects = [
[
{
"name": "1",
"data": [
{
"prop1": "22",
"prop2": "56",
"values": [
{
"arr1": [{1},{2}],
"arr2": [{11},{22}],
"arr3": [{13},{23}]
}
]
},
{ "prop1": "22",
"prop2": "56",
"values": [
{
"arr1": [],
"arr2": [],
"arr3": []
}
]
},
{
"prop1": "22",
"prop2": "56",
"values": [
{
"arr1": [],
"arr2": [],
"arr3": []
}
]
}
]
},
{
"name": "2",
"data": [
{
"prop1": "22",
"prop2": "56",
"values": [
{
"arr1": [{1},{2}],
"arr2": [{13},{23}],
"arr3": []
}
]
},
{
"prop1": "22",
"prop2": "56",
"values": [
{
"arr1": [],
"arr2": [],
"arr3": []
}
]
}
]
}
]
]
Как в поле data удалить этот элемент полностью, если в поле values все поля пустые. Т.е. должно в итоге выглядеть так
let objects = [
[
{
"name": "1",
"data": [
{
"prop1": "22",
"prop2": "56",
"values": [
{
"arr1": [{1},{2}],
"arr2": [{11},{22}],
"arr3": [{13},{23}]
}
]
}
]
},
{
"name": "2",
"data": [
{
"prop1": "22",
"prop2": "56",
"values": [
{
"arr1": [{1},{2}],
"arr2": [{13},{23}],
"arr3": []
}
]
}
]
}
]
]
Ответы (1 шт):
Автор решения: Igor
→ Ссылка
let objects = [
[{
"name": "1",
"data": [{
"prop1": "22",
"prop2": "56",
"values": [{
"arr1": [1, 2],
"arr2": [11, 22],
"arr3": [13, 23]
}]
},
{
"prop1": "22",
"prop2": "56",
"values": [{
"arr1": [],
"arr2": [],
"arr3": []
}]
},
{
"prop1": "22",
"prop2": "56",
"values": [{
"arr1": [],
"arr2": [],
"arr3": []
}]
}
]
},
{
"name": "2",
"data": [{
"prop1": "22",
"prop2": "56",
"values": [{
"arr1": [1, 2],
"arr2": [13, 23],
"arr3": []
}]
},
{
"prop1": "22",
"prop2": "56",
"values": [{
"arr1": [],
"arr2": [],
"arr3": []
}]
}
]
}
]
]
for (let i = 0; i < objects[0].length; i++) {
for (let j = 0; j < objects[0][i].data.length; j++) {
if (objects[0][i].data[j].values[0].arr1.length == 0 && objects[0][i].data[j].values[0].arr2.length == 0 && objects[0][i].data[j].values[0].arr3.length == 0) {
objects[0][i].data.splice(j--, 1);
}
}
}
console.log(objects);