从动态列表对象中获取对象

Get an object from dynamic list object

本文关键字:获取 取对象 对象 动态 列表      更新时间:2023-09-26

我有一个变量列表如下,

var gfList = {};
gfList['1'] = {
    center: new google.maps.LatLng(41.878113, -87.629798),
    radius: 400
};
gfList['2'] = {
    center: new google.maps.LatLng(40.714352, -74.005973),
    radius: 250
};
gfList['3'] = {
    center: new google.maps.LatLng(34.052234, -118.243684),
    radius: 650
};
gfList['4'] = {
    center: new google.maps.LatLng(49.25, -123.1),
    radius: 550
};

我想要一个对象从这个列表中基于我的选择框的值选择。
如果我使用Static Value

,下面的代码可以正常工作
$('#geofenceId').on("change", function() {
    var geofenceId = '1';
    var gfence = gfList[geofenceId];
    alert('Values are : ' + geofenceId + ',' + gfence.center + '--' + gfence.radious);
});

但是这个代码不工作,如果我从select Box

中获得值
$('#geofenceId').on("change", function() {
    var geofenceId = $('#geofenceId').val();
    var gfence = gfList[geofenceId];
    alert('Values are  : ' + geofenceId + ',' + gfence.center + '--' + gfence.radious);
});

在浏览器控制台

中出现以下错误

TypeError: gfence is undefined

我建议您使用数组而不是JSON对象来处理数据。

然后,当更改事件被触发时,使用$(this).find(':selected').val()获取选项的值,在其上应用parseInt(),最后从具有新索引的结构中获取条目。

下面是JS代码的示例:
var data = new Array();
data.push({ id : "foo", extra : "extra data"});
// prepare your data here
$('.js-dropdown').on('change', function() {
    var option = $(this).find(':selected');
    var index = parseInt(option.val());
    console.log('outcome: ' + data[index]);
});

当然,使用数组会迫使您对数据进行排序。否则,使用原始JSON对象。然而,我认为你必须解析输入,以确保你的代码工作。