在 Javascript 中表示复杂/嵌套数据
Representing complex/nested data in Javascript
我正在尝试通过JSON从我的Rails应用程序发送到JS脚本,以某种有趣的方式呈现页面。假设 Rails 中的数据是关于人及其资产的,如下所示:
[
{:name => 'Bill Smith', :state => 'KS'} => [
{:type => 'house', :valuation => 150000},
{:type => 'car', :valuation => 10000}
],
{:name => 'Bubba Jack', :state => 'FL'} => [
{:type => 'boat', :valuation => 12000}
]
]
在JS端,我希望能够访问各个字段,但是,JS不允许对象的键是对象,因此data.to_json将所有人员详细信息转换为一个字符串,如下所示:
[{"{:name=>'"Bill Smith'", :state=>'"KS'"}":[{"type":"house","valuation":150000},{"type":"car","valuation":10000}],"{:name=>'"Bubba Jack'", :state=>'"FL'"}":[{"type":"boat","valuation":12000}]}]
我不能做这样的事情
var people = Object.keys(data);
for(var i=0; i<people.length; i++) {
var totAsset = 0;
var person = people[i];
for(var j=0;j<data[person].length; j++) {
totAssset = totAsset + data[person][j].valuation
}
alert("got person named " +person.name+" having $"+totAsset);
}
在 AJAX 应用程序的 JS 端表示和使用复杂数据的"正确"方法是什么?
更新:因此,sgrif和Andrew的答案都为这个特定问题提供了解决方案。我已经对他们两个都投了赞成票,但我会等一会儿,看看是否有一个更普遍的想法,有人必须在接受之前将对象表示为键或具有该功能的东西。
[
{name: "Bill Smith", state: "KS", possessions: [
{type: "house", valuation: 1500000},
{type: "car", valuation: 10000}
]},
etc...
]
这样组织记录不是更容易吗:
@people = [
{:name => 'Bill Smith', :state => 'KS', :assets => [
{:type => 'house', :valuation => 150000},
{:type => 'car', :valuation => 10000}
]},
{:name => 'Bubba Jack', :state => 'FL', :assets => [
{:type => 'boat', :valuation => 12000}
]}
]
然后使用"渲染:json => @people",它会给你。
{[ "name": 'Bill Smith', "state": 'KS', "assets": [
{"type": 'house', "valuation": 150000},
{"type": 'car', "valuation": 10000},
],
[ "name": 'Bubba Jack', "state": 'FL', "assets": [
{"type": 'boat', "valuation": 12000}
]}
然后按此访问值。
'Bill Smith' = people[0]["name"]
'house' = people[0]["assets"][0]["type"]
相关文章:
- 如何为d3.js图表输出组织/嵌套数据
- 有没有一种简单的方法可以用Lodash映射嵌套数据
- 在 Javascript 中表示复杂/嵌套数据
- Meteor+MongoDB:如何获取嵌套数据
- 如何在Firebase中使用Angularjs ng-repeat检索嵌套数据
- D3 循环访问嵌套数据
- D3:平展嵌套数据
- 如何调用嵌套数据值
- 如何使用React访问Firebase中的嵌套数据
- d3访问分组条形图中的嵌套数据
- 使用Underscore Js聚合嵌套数据
- 用ng-repeat表嵌套数据
- 用postgres在express应用中嵌套数据
- MongoDB:更新嵌套数据,但避免多个对象
- 如何使用基本适配器在Ember.js模型的模板中显示嵌套数据
- 访问嵌套数据
- 任意深度的D3嵌套数据
- ExtJS -保存嵌套数据到.json文件
- 在D3.js中使用嵌套数据
- 通过角度保存嵌套数据