我正在努力将一些值推入数组。我想在键或可能的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; });
但是似乎它们都不起作用,它们返回一个空数组变体!我在做什么错了?
任何帮助都将不胜感激。