javascript - 访问数组中的对象

标签 javascript jquery arrays object element

这里我有一个 bigArray,其中有对象。每个对象都有 top、left、lat、lng 元素。

 bigArray  [Object, Object, Object, Object, Object, Object, Object, Object, Object]
    0: Object
    lat: 33.543
    leftPosition: 54
    lng: 56.345
    topPosition: -3
    __proto__: Object
    1: Object
    lat: 32.4534
    leftPosition: 197
    lng: 45.634345
    topPosition: 57
    __proto__: Object
    2: Object
    lat: 34.6434
    leftPosition: 245
    lng: -102.324234
    topPosition: -3
    __proto__: Object
    3: Object
    lat: 23.3423
    leftPosition: 330
    lng: 57.5343
    topPosition: 57
    __proto__: Object
    4: Object
    5: Object
    6: Object
    7: Object
   // N number of array etc... ...: Object
    length: 9
    __proto__: Array[0]

现在我有这个函数,可以根据两个地点之间的纬度和经度计算公里距离:

var loc1 = { lat: 42.672708, lon: 23.32147800000007 };
var loc2 = {lat:42.670242, lon:23.315002999999933};

function arc_distance(loc1, loc2) {
    var rad  = Math.PI / 180,
        earth_radius = 6371.009, // close enough
        lat1 = loc1.lat * rad,
        lat2 = loc2.lat * rad,
        dlon = Math.abs(loc1.lon - loc2.lon) * rad,
        M    = Math;

    return earth_radius * M.acos(
        (M.sin(lat1) * M.sin(lat2)) + (M.cos(lat1) * M.cos(lat2) * M.cos(dlon))
    );
}
alert (arc_distance(loc1,loc2));

但是现在我有一个问题如何计算所有对象之间的距离?所以 object[0]---distance---object[1]---distance---object[2]---distance---object[N] ,其中 bigArray 中的 N 个对象

那么我如何访问 object[0].lat.lng , object[1].lat.lng , object[2].lat.lng并根据我的函数计算对象之间的距离并将距离添加到对象,因此对象将为 object{top,left,lat,lng, DISTANCE_FROM_PREVIOUS_OBJECT_LOCATION}

最佳答案

试试这个

for (var i = arr.length-1; i > 0; i--) {
        arr[0].DISTANCE_FROM_PREVIOUS_OBJECT_LOCATION = 0; 
        arr[i].DISTANCE_FROM_PREVIOUS_OBJECT_LOCATION = arc_distance({lat: arr[i-1].lat, lon: arr[i-1].lng}, {lat: arr[i].lat, lon: arr[i].lng});
}

<强> JSFIDDLE

关于javascript - 访问数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17949350/

相关文章:

javascript - 禁用 JavaScript 时的 WebdriverIO 自动化测试

javascript - 数据更新后如何调用 Angular 数据表分页刷新回调?

javascript - jquery 可拖动函数

javascript - angularJs 中的 '$add' 功能是什么?

javascript - javascript 的一个示例程序的输出给出了错误的答案

javascript - 更新返回匹配

javascript - hammer-time.min.js 包含未定义的函数 hasTouchNone

javascript - 使用 jQuery 为属性设置新值

javascript - HTML 表单值不会推送到 JavaScript 数组

javascript - mootools javascript 递归返回 Array.each()