我有一个对象:
var car = {
company: "Honda",
year: "2011",
Model: "Brio"
}
我想知道是否存在继承方法(这是正确的短语吗?)来检查给定对象中是否存在值,有点像 x.hasOwnProperty
或 if (x in car)
。或者,我应该自己写。
我做了一些谷歌搜索,但它们都导致 hasOwnProperty
或检查数组中是否存在值。
编辑以取悦评论中的所有人:我可以想到两个用例,这在哪些地方有用:
- 检查未定义的键并报告是哪一个
if (!car.isInvalid(car, undefined))
validCarsArray.push (car);
- 检查对象中是否存在一般用户输入
var text = searchBox.input;
validCarArrays.forEach (function (car) {
if (car.hasOwnValue(car, text)) {
displayToUserAsResult (car);
}
});
原文由 Daedalus 发布,翻译遵循 CC BY-SA 4.0 许可协议
不,没有内置方法来搜索对象的值。
这样做的唯一方法是遍历对象的所有键并检查每个值。使用即使在旧浏览器中也能工作的技术,您可以这样做:
注意:这将返回包含搜索值的第一个属性,即使可能有多个匹配的属性。以效率为代价,您可以返回包含所需值的所有属性的数组。
注意:这使用额外的
.hasOwnProperty()
检查作为防止任何将可枚举属性添加到Object.prototype
代码的保护措施。如果没有这样的代码,并且您确定永远不会有,那么可以取消.hasOwnProperty()
检查。