循环浏览以特定键名开头的JSON数组中的键

时间:2018-11-30 10:45:50

标签: javascript jquery json

是否存在一种有效的方法来循环遍历以键名“ 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);
}

1 个答案:

答案 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;