javascript - 访问对象内多维数组内的对象元素

标签 javascript jquery arrays multidimensional-array knockout.js

我正在使用 Knockout.js,我的 viewModel 是一个内部带有多维数组的对象,我在访问特定元素时遇到了问题。我的代码是:

var viewModel = {
    states: [
        new state("Virginia", [["Va Beach",[{lat:36.852926,lng:-75.977985}]], ["Chincoteague Island",[{lat:37.933179,lng:-75.378809}]]]),
        new state("Maryland", [["Atlantic City",[{lat:39.364283,lng:-74.422927}]], ["Ocean city",[{lat:38.336503,lng:-75.084906}]]]),
        new state("North Carolina", [["Oakacroke",[{lat:35.114615,lng:-75.98101}]], ["Nags Head",[{lat:35.957392,lng:-75.624062}]],["Emerald Isle",[{lat:34.677940,lng:-76.950776}]]])
        ]
};

var state = function(name, city) {
    this.name = name;
    this.city = ko.observableArray(city);
}

我正在尝试获取每个城市的纬度和经度。我尝试过使用 JSON.stringify 和过滤器,但无法专门隔离 lan 和 lng。

http://codepen.io/ntibbs/pen/vNMKzg?editors=101

最佳答案

foreach:city 绑定(bind)的上下文中,您需要执行如下操作:

<span data-bind="text: $data[1][0].lat"></span>
<span data-bind="text: $data[1][0].lng"></span>

基本上,您的states数组有一个名为city的属性(坏名字,它真的应该是cities),它本身就是,数组。因此,您需要为该数组建立​​索引(这就是 foreach 所做的),并且该数组中的每个项目本身就是一个数组,其中第一项是城市名称,第二项是一个带有具有您需要的 latlng 属性的单个对象。

所以像 viewModel.states[0].city[0][1][0].lat 这样的东西应该会给你 36.852926

当然,考虑到访问所需的属性是多么复杂,可能值得考虑将其转换为更易于使用的东西。

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

相关文章:

javascript - 如何限制 Rails 应用程序中的鼠标点击率?

javascript - Youtube 嵌入 API 和外部 JS

javascript - Jquery dotdotdot 仅在窗口调整大小时正确触发

arrays - 在 Erlang 中对数组数组进行排序

javascript - 如何在链接点击时显示jquery对话框

javascript - 为什么第二次调用 getCard 函数会返回牌组的第二张?

jquery - 如何在没有表单的情况下将字符串数组发布到 ASP.NET MVC Controller ?

javascript - 搜索并用 jQuery 替换

c - 如何获取数组中元素的个数?

arrays - HiveQL:如何在数组 <string> 的列中查找重复元素