You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测访问带编号属性名,并用循环批量处理相关属性?

解决方案

1. 动态属性访问的实现方法

JavaScript 访问对象属性有两种方式:点表示法(obj.key)和方括号表示法(obj['key'])。要动态拼接带编号的属性名,必须用方括号表示法,把拼接后的字符串作为属性名传入。

比如要访问strIngredient1,可以写成:

const ingredient = response.meals[0][`strIngredient${i}`];

这里用 ES6 模板字符串${i}拼接编号,也可以用传统字符串拼接:'strIngredient' + i。

2. 完整可运行代码

结合需求,我们可以过滤空值避免数组混入无效内容,同时优化循环终止逻辑(不用固定循环20次,遍历到空属性即停止):

const meal = response.meals[0];
const ingredList = [];

for (let i = 1; ; i++) {
  // 动态获取当前编号的食材和用量
  const ingredient = meal[`strIngredient${i}`];
  const measure = meal[`strMeasure${i}`];
  
  // 食材为空时,说明已遍历完所有有效项,终止循环
  if (!ingredient) break;
  
  // 把用量和食材存入数组(用量为空时可选择跳过,这里按需处理)
  if (measure) ingredList.push(measure);
  ingredList.push(ingredient);
}

console.log(ingredList);

如果需要固定循环20次(比如API最多返回20项),也可以保留次数限制,同时过滤空值:

const meal = response.meals[0];
const ingredList = [];

for (let i = 1; i < 21; i++) {
  const ingredient = meal[`strIngredient${i}`];
  const measure = meal[`strMeasure${i}`];
  
  if (!ingredient) continue; // 跳过空食材项
  
  if (measure) ingredList.push(measure);
  ingredList.push(ingredient);
}

console.log(ingredList);

3. 相关搜索术语

你可以搜索以下关键词获取更多资料:

  • JavaScript 动态对象属性访问
  • JavaScript 对象方括号表示法
  • JavaScript 遍历带编号的对象属性

4. 方案优化建议

  • 避免固定循环次数:API返回的食材数量不固定,遍历到空属性终止更灵活
  • 过滤空值:保证数组内只有有效数据,提升后续使用体验
  • 可将食材和用量配对存储为对象数组,便于后续操作:
    const ingredList = [];
    // ...
    ingredList.push({ ingredient, measure });
    

内容的提问来源于stack exchange,提问作者Matthew Osborne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 13:40:47