在JavaScript中迭代对象值的最有效/最优雅的方法是什么?
例如,假设以下对象:let myObj = {p1: "v1", p2: "v2"}
答案 0 :(得分:1)
ECMAScript 2017:
如果您的目标平台支持Object.values:
Object.values(myObj).forEach(value => /* do something */)
如果您还需要属性名称,则可以将Object.entries与array destructuring结合使用:
Object.entries(myObj).forEach(([key, value]) => /* do something */)
ECMAScript 5:
如果您需要向后兼容并且不想使用polyfill:
Object.keys(myObj).map(prop => myObj[prop]).forEach(value => /* do something */)
旧版本:
请注意,for...in语句也会迭代原型的属性,因此您需要使用Object.prototype.hasOwnProperty对其进行过滤。
for (var key in myObj) {
if (myObj.hasOwnProperty(key)) {
var value = myObj[key];
// do something
}
}