2

I want to delete the items which have {"lat":0,"lng":0} in this json object, here's the object :

[{
    "lat": 35.77118697154732,
    "lng": -5.809084439749561
}, {
    "lat": 35.77118697154732,
    "lng": -5.809084439749562
}, {
    "lat": 0,
    "lng": 0
}, {
    "lat": 0,
    "lng": 0
}, {
    "lat": 0,
    "lng": 0
}]

I tried this:

storyboard.deleteLngAndLatEqualZeo = function(data) {
    for (var i = 0; i < data.length; i++) {
        var currentData = data[i];
        if (currentData.lat == 0 && currentData.lng == 0) {
            data.splice(i, 1);
        }
    }
    console.log(JSON.stringify(data));
}

It doesn't work. Can someone help?

3
  • use Array.prototype.filter function Commented May 25, 2017 at 10:12
  • how to use it ?? Commented May 25, 2017 at 10:13
  • Your code doesn't work because the data.lenght is beeing changed inside the loop by using splice. Commented May 25, 2017 at 10:26

3 Answers 3

2

You can use slice, Checkout my answer

for (var i = data.length - 1; i > -1; i--) {
    var latData=data[i].lat;
    var lngData=data[i].lng;
    if (put condition) {
        data.splice(i, 1);
    }
}
Sign up to request clarification or add additional context in comments.

Comments

1

You can use Array.prototype.filter() function like this:

var data = [{
    "lat": 35.77118697154732,
    "lng": -5.809084439749561
}, {
    "lat": 35.77118697154732,
    "lng": -5.809084439749562
}, {
    "lat": 0,
    "lng": 0
}, {
    "lat": 0,
    "lng": 0
}, {
    "lat": 0,
    "lng": 0
}];

var result = data.filter(function(d) {
  return !(d.lat === 0 && d.lng === 0);
});

console.log(result);

Comments

0

data = 
[{
    "lat": 35.77118697154732,
    "lng": -5.809084439749561
}, {
    "lat": 35.77118697154732,
    "lng": -5.809084439749562
}, {
    "lat": 0,
    "lng": 0
}, {
    "lat": 0,
    "lng": 0
}, {
    "lat": 0,
    "lng": 0
}];

deleteLngAndLatEqualZeo = function(data) {
    for (var i = 0; i < data.length; i++) {
        var currentData = data[i];
        if (currentData.lat == 0 && currentData.lng == 0) {
            data.splice(i, 1);
            --i;
        }
    }
    console.log(JSON.stringify(data));
}

deleteLngAndLatEqualZeo(data);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.