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

如何循环对象strIngredient1至15属性创建新数组?解决取值错误

问题解决:正确提取对象中动态命名的属性值到数组

你的代码生成undefined1这类无效元素的核心原因是错误的对象属性访问方式,以及未正确获取属性值,具体修正如下:

错误原因分析

  • koktelData中不存在strIngredient这个属性,只有strIngredient1到strIngredient15,所以koktelData.strIngredient会返回undefined,拼接[i]后就变成了"undefined1"这类无意义字符串。
  • 动态访问对象属性时,必须使用括号表示法,而不是直接拼接字符串。

正确代码实现

方式一:基础for循环(带空值过滤)

let sastojci = [];
for (let i = 1; i <= 15; i++) {
  // 动态拼接属性名,用括号访问对象属性
  const ingredient = koktelData[`strIngredient${i}`];
  // 过滤空值、undefined,避免数组混入无效元素
  if (ingredient) {
    sastojci.push(ingredient);
  }
}
console.log(sastojci);

方式二:更简洁的数组生成写法

const sastojci = Array.from({ length: 15 }, (_, idx) => {
  return koktelData[`strIngredient${idx + 1}`];
}).filter(Boolean); // 自动过滤空值、undefined、false等无效值
console.log(sastojci);

内容的提问来源于stack exchange,提问作者aLEKSANDAR mILOSAVLJEVIC

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:54:20