I have multiple objects in array. It has values array with value property in object. when all value properties are empty. I want to remove whole object.
I tried it but i am not able to produce output. Please help me.
var data = [
{
"field": "surname",
"values": [
{
"id": "drivingLicenseFront",
"value": "",
"isAvailable": true
},
{
"id": "passport",
"value": "",
"isAvailable": true
}
],
"status": "passed"
},
{
"field": "given names",
"values": [
{
"id": "drivingLicenseFront",
"value": "",
"isAvailable": true
},
{
"id": "passport",
"value": "",
"isAvailable": true
}
],
"status": "passed"
},
{
"field": "date of birth",
"values": [
{
"id": "drivingLicenseFront",
"value": "25.07.1974",
"isAvailable": true
},
{
"id": "passport",
"value": "05 JUN /JOIN 57",
"isAvailable": true
}
],
"status": "passed"
}
];
for (let x = data.length-1; x >= 0; x--) {
let count = 1;
var dataValueLength = data[x].values.length;
for (let y = 0; y < data[x].values.length; y++) {
if (data[x].values[y].value === "") {
count++;
}
}
if (dataValueLength == count) {
data.splice(x, 1)
}
}
console.log(JSON.stringify(data));
In above scenario, output should be only one object that is "date of birth".
Very close, just one issue (you are initializing count to 1 instead of 0), make it
let count = 0;
Demo
var data = [{
"field": "surname",
"values": [{
"id": "drivingLicenseFront",
"value": "",
"isAvailable": true
},
{
"id": "passport",
"value": "",
"isAvailable": true
}
],
"status": "passed"
},
{
"field": "given names",
"values": [{
"id": "drivingLicenseFront",
"value": "",
"isAvailable": true
},
{
"id": "passport",
"value": "",
"isAvailable": true
}
],
"status": "passed"
},
{
"field": "date of birth",
"values": [{
"id": "drivingLicenseFront",
"value": "25.07.1974",
"isAvailable": true
},
{
"id": "passport",
"value": "05 JUN /JOIN 57",
"isAvailable": true
}
],
"status": "passed"
}
];
for (let x = data.length - 1; x >= 0; x--) {
let count = 0; //Observe change in this line
var dataValueLength = data[x].values.length;
for (let y = 0; y < data[x].values.length; y++) {
if (data[x].values[y].value === "") {
count++;
}
}
if (dataValueLength == count) {
data.splice(x, 1)
}
}
console.log(JSON.stringify(data));
You can use reduce to filter out the items with no values
var data = [
{
"field": "surname",
"values": [
{
"id": "drivingLicenseFront",
"value": "",
"isAvailable": true
},
{
"id": "passport",
"value": "",
"isAvailable": true
}
],
"status": "passed"
},
{
"field": "given names",
"values": [
{
"id": "drivingLicenseFront",
"value": "",
"isAvailable": true
},
{
"id": "passport",
"value": "",
"isAvailable": true
}
],
"status": "passed"
},
{
"field": "date of birth",
"values": [
],
"status": "passed"
}
];
var result = data.reduce(function(p,c){
if(c.values && c.values.length > 0)
p.push(c);
return p;
},[]);
console.log(result);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With