2017-05-25 62 views
2

我想刪除在此JSON對象有{"lat":0,"lng":0}的項目,這裏的對象:如何從JSON對象中刪除項目與angularjs

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

我嘗試這樣做:

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)); 
} 

一點也沒有沒有工作。有人可以幫忙嗎?

+0

使用'Array.prototype.filter'函數 – abhishekkannojia

+0

如何使用它? –

+0

你的代碼不起作用,因爲'data.lenght'使用'splice'在循環內部進行了修改。 – Diego

回答

1

可以使用Array.prototype.filter()功能如下:

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);

+0

坦克它的工作.. –

2

您可以使用slice,結賬我的回答

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); 
    } 
} 
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);