我有一个对象:
var car = {
company: "Honda",
year: "2011",
Model: "Brio"
}
我想知道是否存在继承方法(这是正确的短语吗?)来检查给定对象中是否存在值,有点像x.hasOwnProperty
, or 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);
}
});
假设我们从
const obj = {foo : "bar"};
检查一个值:
const hasValue = Object.values(obj).includes("bar");
检查财产:
// NOTE: Requires obj.toString() if key is a number
const hasProperty = Object.keys(obj).includes("foo");
多级值:
function hasValueDeep(json, findValue) {
const values = Object.values(json);
let hasValue = values.includes(findValue);
values.forEach(function(value) {
if (typeof value === "object") {
hasValue = hasValue || hasValueDeep(value, findValue);
}
})
return hasValue;
}
多级属性:
function hasPropertyDeep(json, findProperty) {
const keys = Object.keys(json);
let hasProperty = keys.includes((findProperty).toString());
keys.forEach(function(key) {
const value = json[key];
if (typeof value === "object") {
hasProperty = hasProperty || hasPropertyDeep(value, findProperty);
}
})
return hasProperty;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)