如果我们有一个 javascript 对象
var calories = { apple:200, pear:280, banana:300, peach:325 }
找到(第一个)含有 280 卡路里的水果的最佳方法是什么?
可以Object.getOwnPropertyNames(calories).forEach...
但应该有更好的方法。
例如,我正在考虑 Array.prototype.indexOf()
它对数组执行相同的操作。
最佳答案
小心!不保证所有浏览器返回相同的结果。事实上他们没有。
例如:
var x = { a: 1, b: 1 };
delete x.a;
x.a = 1;
这里x.indexOf(1)
应该返回什么? b
还是a
?事实证明,IE 的属性枚举方式与其他浏览器不同,并且规范表明这完全没问题。因此 IE 将返回 a
,而其他浏览器将返回 b
。
您可以通过调用来验证
Object.getOwnPropertyNames(x); // IE: a,b - other browsers: b,a
Object.keys(x); // same
for (var i in x) { console.log(i); } // same
显然,这里的问题是对象索引上没有“顺序”的概念,因为,这就是对象:无序映射。
关于javascript - 在 javascript 对象中,获取值的属性的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9052888/