javascript - 在 javascript 对象中,获取值的属性的最佳方法是什么?

标签 javascript object attributes

如果我们有一个 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/

相关文章:

javascript - 跳出 _.each 循环

javascript - 如何销毁在此构造函数中创建的对象?

php - Magento:在特殊 View 上进行分层导航

c# - MVC3 范围属性 - 不允许值为零

javascript - 如果包没有依赖项,执行 npm install 是否有意义?

javascript - UI-Router过滤Json数据

javascript - 如何使用带有 knockout 功能的 jquery ui 按钮?

c++ - C++ 对象中的堆栈成员与堆成员

java - 请帮我理解这行代码

c# - 在 WCF 中使用 Unity 将依赖项注入(inject)属性