【发布时间】:2017-02-15 18:18:28
【问题描述】:
我有以下对象:
var business_challenges =[{title: 'Business Challenges'}, [{digital_trans: 'Digital Transformation'}, {agile_mobile:'Agile & Mobile Working always_on'}, {always_on:'Always on Infrastructure'}, {connect_protect: 'Connect & Protect'}, {cost_cutting:'Cost Cutting/Maximise Investment'}, {improving_cust: 'Improving Customer Engagement'} ]];
var business_divisions = [{title: 'Business Divisions'},[{SMB:'SMB'}, {DCS:'DCS'}, {DPS:'DPS'}]];
var filters = $.merge(business_divisions, business_challenges);
我正在尝试遍历对象以获取键:值对,但我正在苦苦挣扎。 Key 值是数字而不是关联数组键,并且值是一个对象。我已经尝试嵌套另一个 $each 但这不起作用。
有人可以帮忙吗?我是否需要更改 filters 对象的组合方式?
var filter_html = '<ul>';
//var filtersJSON = $.parseJSON(filters);
$.each(filters, function(i, data) {
var filter_title = data.title; //THIS WORKS
filter_html = filter_html+filter_title;
$.each(data, function(key, val) {
filter_html = filter_html+'<li><input type="checkbox" value="'+ key +'">'+ val.key +'</li>'; //THIS DOESNT WORK
});
});
filter_html = filter_html+ '</ul>';
$('#filterControls').html(filter_html);
【问题讨论】:
-
那个数据结构很奇怪。你控制它的来源吗?
-
是的,如果需要,我可以更改它。这是我第一次尝试在 Javascript 中组合关联数组/对象。我更习惯 PHP 所以有点困惑!
-
我认为你应该使用
$.extend()i.p.o. $.merge(). -
那么您当前的问题是您需要另一个嵌套循环来迭代每个子数组中的子数组,合并或扩展会使事情变得更加复杂
-
建议你回到源头并以更一致的方式构建它。
标签: jquery loops object each associative-array