我有两个输入(可能更多),每个输入都具有相同的名称以形成一个数组,在本例中为 name="cards[unique name]"。另外,还有一个json,我需要从里面按键获取数据,放到对应输入的值中。那些。我将 json 中的键与输入的名称进行比较,并将值放在那里。
var content = '{"cards":{"title":"1","text":"2"},"active":"1","ver":"v1","sort":"3"}';
var obj = jQuery.parseJSON(content);
var arr = [];
$('.form-component').each(function() {
arr.push($(this).attr('name'));
});
arr.forEach(function(arr) {
$('.form-component[name="' + arr + '"]').val(obj[arr]);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<input class="form-component" name="cards[title]" value="">
<input class="form-component" name="cards[text]" value="">
<input class="form-component" name="active" value="">
根据代码,我执行以下操作:我收集具有相同类的所有输入并获取它们的名称。我从它们中形成一个数组。然后我遍历带有名称的数组并将其替换为 obj[arr]。
如果输入具有简单的名称,例如 name="active"。然后一切正常,但如果使用 name="cards[title]",则不行。或者,如果您像这样手动指定它: obj.cards['title'] - 同样可以。
这个特殊问题有一个相当简单的解决方案:
仍然需要检查某些键可能丢失的情况。