香港专业教育学院有一个对象:
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);
}
});
不,没有内置方法可在对象上搜索值。
唯一的方法是遍历对象的所有键并检查每个值。使用即使在旧的浏览器中也可以使用的技术,您可以这样做:
function findValue(o, value) {
for (var prop in o) {
if (o.hasOwnProperty(prop) && o[prop] === value) {
return prop;
}
}
return null;
}
findValue(car, "2011"); // will return "year"
findValue(car, "2012"); // will return null
注意:即使可能存在多个匹配的属性,这也会返回包含搜索值的第一个属性。以效率为代价,您可以返回包含所需值的所有属性的数组。
注意:这将使用额外的.hasOwnProperty()
检查来防止任何向枚举属性添加代码的代码Object.prototype
。如果没有这样的代码,并且您确定永远不会有,则.hasOwnProperty()
可以取消该检查。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句