【发布时间】:2017-03-13 00:08:07
【问题描述】:
出于好奇,我目前正在尝试用常规 for 循环替换我拥有的 for in 循环,但没有成功。我总是得到undefined。这甚至可以用 javascript 对象实现吗?
我循环的示例对象:
var el = {
1: {type: "fish", commonName: "clownfish", scientificName: "sdasd", gender: "m", price: 1.99},
2: {type: "fish", commonName: "dragonfish", scientificName: "dada", gender: "f", price: 2.99}
};
我的工作方法:
for (var element in el) {
if (el[element].type === type && el.hasOwnProperty(element)) {
elementNum++;
}
}
总是让我着迷的简单 for 循环方法Cannot read property 'type' of undefined:
for(var i = 0, x = Object.keys(el).length; i < x; i++) {
if (el[i].type === type && el.hasOwnProperty(i)) {
elementNum++;
}
}
【问题讨论】:
-
@Matias 有正确的答案,但我想知道你为什么不使用数组?是否会跳过某些索引或其他内容?另外,切换
(el[i].type === type && el.hasOwnProperty(i))的顺序,这样如果el[i]不存在,它就不会检查.type(因为如果发现一个错误的,javascript 会停止查看if AND语句。
标签: javascript loops oop object for-loop