Javascript 循环遍历JSON数组中以特定键名开头的键
有没有一种有效的方法可以循环遍历以键名“option”开头的JSON数组中的键,然后循环遍历所有键或设置最大值 我目前正在做以下工作:Javascript 循环遍历JSON数组中以特定键名开头的键,javascript,jquery,json,Javascript,Jquery,Json,有没有一种有效的方法可以循环遍历以键名“option”开头的JSON数组中的键,然后循环遍历所有键或设置最大值 我目前正在做以下工作: $.each(shopifyProductJSON.variants, function(index, variant) { variantOptions = new Array(); variantOptions.push(variant.option1); variantOptions.push(variant.option2);
$.each(shopifyProductJSON.variants, function(index, variant) {
variantOptions = new Array();
variantOptions.push(variant.option1);
variantOptions.push(variant.option2);
variantOptions.push(variant.option3);
});
这很好,但希望它更加动态,以防将来添加更多选项
每个变量的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);
}
variantOptions=新数组();
对于(i=1;i<4;i++){
变量键='选项'+i;
差异。按(键);
}
要解决眼前的问题,您需要访问循环中的对象属性,而不是将字符串推入数组:
let variantOptions = [];
for (i = 1; i < 4; i++) {
var key = 'option' + i;
if (data.hasOwnProperty(key)) {
variantOptions.push(data[key]);
}
}
然后,访问选项的JS将成为一个简单的属性访问器:
让variantOptions=data.options;
同意。在restAPI的API中,它们作为选项1、选项2键返回。。。这太愚蠢了。在JSAPI中,它们以数组的形式返回,但是对于速率限制,我使用restAPI转储JSON,所以我只能使用它。
{
inventory_management: null
inventory_policy: "deny"
inventory_quantity: 0
old_inventory_quantity: 0
options: ['Bronze', 'Satin Gold', '600mm'],
position: 1
price: "550.00"
}