jQuery数组推值中的变量是否为

时间:2018-11-08 14:41:34

标签: jquery arrays json

我正在努力将一些值推入数组。我想在键或可能的id匹配时将值推入数组。

我尝试了几件事,但是它一直返回一个空数组。

我尝试过的事情:

 function setAttributes(matched){
   var url = 'url-to-json-file';
   var variant = [];
   $.getJSON(url, function(data){
     var match = $.inArray(matched, data.variants) != -1
     if(match){
       variant.push({
         id: variant.id, //etc etc
       });
     }               
   });
   return variant
 }

 $(function(){ 
   var chkd = $('#order input:checked').attr('id') // example 161190021
   setAttributes(chkd)
 });

我的JSON看起来像这样(经过精简,文件有效):

{
  "variants":{
    "161190021":{"id":161190021},
    "161190024":{"id":161190024},
    "161190027":{"id":161190027}
  }
}

要完成HTML:

   <table id="order" .... etc
     <tr class="161190021">
        <td>
          <input type="radio" checked="checked" value="161190021" name="variant" id="161190021">
          <label for="161190021">S</label>
        </td>
      </tr>  

      <tr class="161190024">
        <td>
          <input type="radio" value="161190024" name="variant" id="161190024">
          <label for="161190024">M</label>
        </td>
      </tr>  

      <tr class="161190027">
        <td>
          <input type="radio" value="161190027" name="variant" id="161190027">
          <label for="161190027">Maat: L (35713)</label>
        </td>
      </tr>  
      </table>    

所以基本上我想测试chkd中是否存在变量data.variants。如果是这种情况,我想将匹配的变量中的值推入名为variant的数组中。

我尝试过类似的事情:

var match = $.inArray(matched, data.variants) != -1 
var match = $.grep(data.variants, function(e){ return e.id == matched; });

但是似乎它们都不起作用,它们返回一个空数组变体!我在做什么错了?

任何帮助都将不胜感激。

0 个答案:

没有答案