循环遍历对象数组,直到lat / lng不为零

时间:2015-12-30 15:01:27

标签: javascript google-maps

我有一个带有标记lat / lngs的对象数组,有时地址没有被地理编码所以我想跳过lat:0,lng:0。 我现在想要完成的是设置一个循环,以便循环遍历数组并找到第一个不为空的对象。

它不会显示地图,说它未定义。

这是我到目前为止所提出的。

var Points = [{
    lat: 0,
    lng: 0
}, {
    lat: 42,
    lng: -72
}, {
    lat: 41,
    lng: -73
}];

function initMap()
{
    for (var i = 0; i < Points.length; i++)
    {
        if (Points[i].lat * Points[i].lng != 0)
        {
            map = new google.maps.Map(document.getElementById('map'),
            {
                center: new google.maps.LatLng(Points[i].lat, Points[i].lng),
                zoom: 10,
                scaleControl: true
            })
            break;
        }
        else
        {
            continue;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

使用array.filter

var Points = [{
    lat: 0,
    lng: 0
}, {
    lat: 42,
    lng: -72
}, {
    lat: 41,
    lng: -73
}];

/**
 Given an object with `lat` and `lng` properties, return true if both `lat` and `lng` !== 0
 
 - parameter p: the Point to test
 
 - return: Bool true if both `lat` and `lng` !== 0
 */
function pointIsNonZero(p) {
  return p.lat !== 0 && p.lng !== 0;
}

console.log(Points.filter(pointIsNonZero));