Jquery 如果存在多个值,如何循环处理json项?
我想用来自json提要的数据提交填充一个选择框。我的函数读取json,并循环遍历其值 我得到的结果不是我所期望的,在循环中有些东西是错误的 我的json:Jquery 如果存在多个值,如何循环处理json项?,jquery,json,Jquery,Json,我想用来自json提要的数据提交填充一个选择框。我的函数读取json,并循环遍历其值 我得到的结果不是我所期望的,在循环中有些东西是错误的 我的json: "case": { "1": { "id": "47", "name": "Stahl", "n": 239 }, "2": { "id": "111", "name": "Titan", "n": 16
"case": {
"1": {
"id": "47",
"name": "Stahl",
"n": 239
},
"2": {
"id": "111",
"name": "Titan",
"n": 16
}
},
我的职能:
if (obj.facetes.case ){
$('#case_m').selectmenu( "enable" );
$.each(obj.facetes.case, function(key,valueObj){
Object.keys(valueObj || {}).forEach(function(k) {
$('#case_m').append(
$('<option></option>').val(valueObj['id']).html(valueObj['name'] + ' ('+valueObj['n']+')')
);
})
})
}
else{
$('#case_m').selectmenu( "disable" );
}
结果是:
<select name="case_m" id="case_m" data-mini="true" class="filter_watch">
<option>Material Gehäuse auswählen</option>
<option value="47">Stahl (239)</option>
<option value="47">Stahl (239)</option>
<option value="47">Stahl (239)</option>
<option value="111">Titan (16)</option>
<option value="111">Titan (16)</option>
<option value="111">Titan (16)</option>
</select>
这些值是它们的三倍,与每个项目的元素数量相同。如何更改函数以获得唯一的结果?该问题是由于通过Object.keys的内部循环造成的,您实际上不需要它。您可以直接从valueObj访问属性,例如valueObj.name 也就是说,您可以进一步使用map构建HTML字符串数组来填充select,使代码更加简洁,如下所示: var obj={ 面:{ 案例:{ 1:{id:47,姓名:斯塔尔,n:239}, 2:{id:111,姓名:Titan,n:16} } } } 如果是obj.FACETS.case{ //$'case\m'。选择菜单可使用; var options=Object.keysobj.facetes.case.mapfunctionk{ var item=对象刻面大小写[k]; 返回`${item.name}${item.n}`; }; $‘case_m’。附加选项; }否则{ //$'case\u m'。选择菜单可编辑; } 材料的使用
正如Rory所提到的,这个问题是由于通过Object.keys的内部循环造成的,而您实际上并不需要它。我写了一个稍微不同的逻辑 var obj={}; obj.facetes={}; obj.facetes={大小写:{ 1: { 身份证号码:47, 姓名:斯塔尔, n:239 }, 2: { id:111, 名称:泰坦, n:16 } } } 如果是obj.FACETS.case{ $.eachobj.facetes.case,functionkey,值{ $‘case\m’ .附加$ .attrvalue,值['id'] .textvalue['name']+''+值['n']+; }; } 否则{ $'case_m'。选择菜单禁用; }