我有一个简单的for循环,返回undefined
以下是代码:
var optionName = '';
for(var i=0; i<extras.length; i++){
optionName = extras[i].optionName;
}
console.log(optionName);
// console.log(extras[0].optionName); >> Drinks
// console.log(extras[1].optionName); >> Undefined
这是extras
数组:
答案 0 :(得分:1)
第一个数组元素具有optionName属性,但不是第二个。因此,当您访问extras[1].optionName
时,不存在且代码返回未定义。
答案 1 :(得分:0)
数组中的第二项是数组(Array [3]),而不是对象。该项目未定义optionName
。
答案 2 :(得分:0)
所以,你有一个包含2个元素的数组。
'\012'
正如您所看到的,extras数组中的第一个元素是一个对象,该对象的extras = [
{key: value},
[object0, object1, object2],
]
带有key: optionName
。所以当你打电话时
value: Drinks
它将返回Drinks的值。
然后你的循环移动到数组中的下一个元素并查找console.log(extras[0].optionName);
,但由于你的第二个数组元素是一个数组,它无法找到键并返回undefined。由于我不知道key: optionName
的对象中包含的内容,因此我无法提供有关如何重写循环的建议,但上面是您收到extra[1]
的原因的解释。
您只需添加undefined
条件即可过滤未定义的值:
if
由于undefined是JS中的if (extras[0].optionName) {
console.log(extras[0].optionName);
}
值,因此只要您实际上没有值,它就不会进入falsy
语句。
当然,如果您希望在循环中使用此功能,请将if
替换为[0]
。