如何在javascript的for循环中为json返回生成动态变量?
我调用的API包含一部分我需要提取的成分,然后推送到html页面。它们被列为strIngredient1、strIngredient2、strIngredient3。。。到15岁。我想做的是循环每种成分?我想我需要某种动态变量。完全不确定如何在javascript的for循环中为json返回生成动态变量?,javascript,jquery,api,for-loop,dynamic-variables,Javascript,Jquery,Api,For Loop,Dynamic Variables,我调用的API包含一部分我需要提取的成分,然后推送到html页面。它们被列为strIngredient1、strIngredient2、strIngredient3。。。到15岁。我想做的是循环每种成分?我想我需要某种动态变量。完全不确定 for(变量x=1;xkey.startsWith('strIngredient'); 对于(const i=0;我必须理解逻辑:drinkResponse.drinks是一个饮料列表,每个饮料都有固定数量的成分StringCredit,但是这些成分在对象本
for(变量x=1;x<16;x++){
if((drinkResponse.drinks[0].StringCredit+x)!==null){
$(“#drinkOutput”).append($(“饮料成分”+x+”:“+(drinkResponse.drinks[0].StringCredit+x)+“
”)
}
}
您正试图将值x
附加到变量名。很接近,但需要使用括号符号而不是点符号
例如,如果x
当前为5,则可以使用drinkResponse.drinks[0]['stringresponent'+x]
或drinkResponse.drinks[0]['stringresponent${x}`]
获取stringresponse.drinks的值
正如莱恩指出的,您还可以使用Object.keys
枚举对象上的所有键,然后仅筛选以stringredent
开头的键:
// get all keys on the drink
const allKeys = Object.keys(drinkResponse.drinks[0]);
// now filter for only keys starting with `strIngredient`
const ingredients = allKeys.filter(key => key.startsWith('strIngredient'));
for (const i=0; i<ingredients.length; i++) {
$("#drinkOutput").append($("<p class='drinkData'>Drink Ingredient"
+ i + " : " + (drinkResponse.drinks[0][ingredients[i]]) + "</p>"))
}
//获取饮料上的所有钥匙
const allKeys=Object.keys(drinkResponse.drinds[0]);
//现在只筛选以“StringCredit”开头的键`
const components=allKeys.filter(key=>key.startsWith('strIngredient');
对于(const i=0;i您正试图使用x
的值附加到变量名中。这很接近,但您需要使用括号表示法而不是点表示法
例如,如果x
当前为5,则可以使用drinkResponse.drinks[0]['stringresponent'+x]
或drinkResponse.drinks[0]['stringresponent${x}`]
获取stringresponse.drinks的值
正如莱恩指出的,您还可以使用Object.keys
枚举对象上的所有键,然后仅筛选以stringredent
开头的键:
// get all keys on the drink
const allKeys = Object.keys(drinkResponse.drinks[0]);
// now filter for only keys starting with `strIngredient`
const ingredients = allKeys.filter(key => key.startsWith('strIngredient'));
for (const i=0; i<ingredients.length; i++) {
$("#drinkOutput").append($("<p class='drinkData'>Drink Ingredient"
+ i + " : " + (drinkResponse.drinks[0][ingredients[i]]) + "</p>"))
}
//获取饮料上的所有钥匙
const allKeys=Object.keys(drinkResponse.drinds[0]);
//现在只筛选以“StringCredit”开头的键`
const components=allKeys.filter(key=>key.startsWith('strIngredient');
对于(const i=0;我必须理解逻辑:drinkResponse.drinks
是一个饮料列表,每个饮料都有固定数量的成分StringCredit
,但是这些成分在对象本身中还没有作为一个列表属性提供?您介意提供一个示例对象吗?我已经添加了JSON返回到原始问题。谢谢。如果您可以/有权访问它,您应该尝试打开这些数字列表(strMeasure14,strIngredient15)进入数组。否则结构有点有限/有缺陷。这也会使访问它变得更简单。只是为了理解逻辑:drinkResponse.drinks
是一个饮料列表,每个饮料都有固定数量的成分stringredent
,但是在对象本身中,这些成分并不是作为列表提供的,而是作为字符串属性提供的?W您介意提供一个示例对象吗?我已将JSON返回添加到原始问题中。谢谢。如果您可以/有权访问它,您应该尝试转换这些数字列表(strMeasure14,strIngredient15)进入数组。否则结构有点有限/有缺陷。这也会使访问它更简单。如果是这样,他也应该循环所有键,以StringCredit
开头,而不是从1到15有一个固定的循环。@gcochard我试过了,现在我的回答是undefined of undefined of undefined如果他应该这样做的话还可以循环使用以StringCredit
开头的所有键,而不是从1到15的固定循环。@gcochard我尝试过,现在我的响应是未定义的或未定义的