Jquery 选择对象中的名称

Jquery 选择对象中的名称,jquery,json,Jquery,Json,首先,我还在学习,所以请温柔一点:) 我有一个json响应,我想在其中选择一些特定的元素。 我试图在对象中获取一些具有特定名称的元素,并想测试它是否与预定义名称匹配。这些是带有特定名称的产品规格,如“长度”、“宽度”等 我很难找到那些特定的名字,如果找到了,就得到它们的“value”属性 所以我得到的是: JSON响应: { "product": { "specs": { "231638": { "id": 231638, "tit

首先,我还在学习,所以请温柔一点:) 我有一个json响应,我想在其中选择一些特定的元素。 我试图在对象中获取一些具有特定名称的元素,并想测试它是否与预定义名称匹配。这些是带有特定名称的产品规格,如“长度”、“宽度”等

我很难找到那些特定的名字,如果找到了,就得到它们的“value”属性

所以我得到的是:

JSON响应:

{

"product": {
     "specs": {

       "231638": {
         "id": 231638,
         "title": "Length (mm)",
         "value": "1200"
     },
     "231641": {
         "id": 231641,
         "title": "Width (mm)",
         "value": "800"
     },
         "231644": {
         "id": 231644,
         "title": "Height (mm)",
         "value": "144"
     } //etc etc
现在我只想从规范“length”和“height”中获取两个
value
属性。因此,首先我必须查看这两个名称是否存在,是否与“长度”和“高度”匹配,如果存在,则获取它们的
属性。那就是我需要帮助的地方

最终结果必须是

<div class="somediv">
 <span class="width">1200</span>
 <span class="height">144</span>
</div>
我完全被困在这里了。我尝试过以下方法:

(spec.hasOwnProperty("title"));

非常感谢您的帮助:)

$.getJSON(url、函数(数据){ var specsHtml=“”; $.each(data.product.specs,function(){ //“this”现在是您当前的“spec”,即{“id”:…,“title”:…,等等} specsHtml+=''+此.value+''; }); specsHtml+=''; } container.find('.product bottom.measurements span').html(specsHtml); });
$.getJSON(url、函数(数据){
var specsHtml=“”;
$.each(data.product.specs,function(){
//“this”现在是您当前的“spec”,即{“id”:…,“title”:…,等等}
specsHtml+=''+此.value+'';
});
specsHtml+='';
}
container.find('.product bottom.measurements span').html(specsHtml);
});
var数据={
“产品”:{
“规格”:{
"231638": {
“id”:231638,
“标题”:“长度(mm)”,
“值”:“1200”
},
"231641": {
“id”:231641,
“标题”:“宽度(mm)”,
“值”:“800”
},
"231644": {
“id”:231644,
“标题”:“高度(mm)”,
“值”:“144”
}//等等
}
}
};
变量长度=0,宽度=0,高度=0,
reLength=/length/i,
倒带长度=/width/i,
再重量=/高度/i;
$.each(data.product.specs,函数(specId,spec){
if(释放长度试验(规范标题))
长度=规格值;
否则如果(重新布线试验(规范标题))
宽度=规格值;
否则(重新称重试验(规范标题))
高度=规格值;
});
var html=''+
“w:”+宽度+“”+
“h:”+高度+“”+
'l:'+长度+'+
'';
$(document.body).html(html)
.somediv>span{padding:10px;display:inline block;}
var数据={
“产品”:{
“规格”:{
"231638": {
“id”:231638,
“标题”:“长度(mm)”,
“值”:“1200”
},
"231641": {
“id”:231641,
“标题”:“宽度(mm)”,
“值”:“800”
},
"231644": {
“id”:231644,
“标题”:“高度(mm)”,
“值”:“144”
}//等等
}
}
};
变量长度=0,宽度=0,高度=0,
reLength=/length/i,
倒带长度=/width/i,
再重量=/高度/i;
$.each(data.product.specs,函数(specId,spec){
if(释放长度试验(规范标题))
长度=规格值;
否则如果(重新布线试验(规范标题))
宽度=规格值;
否则(重新称重试验(规范标题))
高度=规格值;
});
var html=''+
“w:”+宽度+“”+
“h:”+高度+“”+
'l:'+长度+'+
'';
$(document.body).html(html)
.somediv>span{padding:10px;display:inline block;}

谢谢你的回答。!但是,这会使所有字段都返回“0”。你能解释一下“/length/i”的作用吗?好的,我想我知道出了什么问题。您的测试
spec.title
,使用该正则表达式,例如宽度。然而,这总是错误的,因为它需要与该规范的
值名
进行比较。你能帮我一下吗?@Meules,我已经用一个可运行的代码片段替换了代码。检查它,好吧,我现在明白了:)正则表达式查找部分名称,而不是全名!它现在起作用了。。。非常感谢谢谢你的回答。!但是,这会使所有字段都返回“0”。你能解释一下“/length/i”的作用吗?好的,我想我知道出了什么问题。您的测试
spec.title
,使用该正则表达式,例如宽度。然而,这总是错误的,因为它需要与该规范的
值名
进行比较。你能帮我一下吗?@Meules,我已经用一个可运行的代码片段替换了代码。检查它,好吧,我现在明白了:)正则表达式查找部分名称,而不是全名!它现在起作用了。。。非常感谢
(spec.hasOwnProperty("title"));
 var specs = [];
        data.product.specs.forEach(data.product.specs => {
        if (data.product.specs)
        for (var spec in data.product.specs)
            specs.push(spec);
        })
$.getJSON(url, function(data){
         var specsHtml = "<div class="somediv">";

      $.each(data.product.specs, function(){
        //'this' is now your current 'spec' which is { "id": ..., "title": ..., etc. }
        specsHtml += '<span class=\"';
        if (this.title.includes('Length'))
          specsHtml += 'length';
        else
          specsHtml += 'width';

        specsHtml = specsHtml + '\">' + this.value + '</span>';
       });
        specsHtml += '</div>';
      }
  container.find('.product-bottom .measurements span').html(specsHtml);
 });