是否存在一种有效的方法来循环遍历以键名“ option”开头的JSON数组中的键,然后全部循环或设置最大值?
我目前正在执行以下操作:
$.each(shopifyProductJSON.variants, function(index, variant) {
variantOptions = new Array();
variantOptions.push(variant.option1);
variantOptions.push(variant.option2);
variantOptions.push(variant.option3);
});
这很好,但是希望它在将来添加更多选项时更具动态性。
每个variant
的JSON数组的一部分示例:
inventory_management: null
inventory_policy: "deny"
inventory_quantity: 0
old_inventory_quantity: 0
option1: "Bronze"
option2: "Satin Gold"
option3: "600mm"
position: 1
price: "550.00"
我认为这是可行的...
variantOptions = new Array();
for (i = 1; i < 4; i++) {
var key = 'option' + i;
variantOptions.push(key);
}
答案 0 :(得分:1)
要解决您的紧迫问题,您需要访问循环中的对象属性,而不是将字符串压入数组:
let variantOptions = [];
for (i = 1; i < 4; i++) {
var key = 'option' + i;
if (data.hasOwnProperty(key)) {
variantOptions.push(data[key]);
}
}
话虽如此,如果选项具有动态长度,那么假设您可以控制响应格式,则将 far 作为数组而不是单独编号的属性返回将更有意义。 。
您可以更改对此的响应:
{
inventory_management: null
inventory_policy: "deny"
inventory_quantity: 0
old_inventory_quantity: 0
options: ['Bronze', 'Satin Gold', '600mm'],
position: 1
price: "550.00"
}
然后,用于访问选项的JS成为一个简单的属性访问器:
let variantOptions = data.options;