Javascript 如果值存在于对象中?

Dae*_*lus 3 javascript exists object node.js

我有一个对象:

var car = {
    company: "Honda",
    year: "2011",
    Model: "Brio"
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否存在一个继承的方法(这是正确的短语吗?)来检查给定对象中是否存在一个值,有点像x.hasOwnProperty, 或if (x in car). 或者,我应该自己写。

我已经做了一些谷歌搜索,但它们都导致 hasOwnProperty 或检查数组中是否存在一个值。

编辑以取悦评论中的所有人:我可以想到两个用例:

  1. 检查未定义的键并报告是哪一个

    if (!car.isInvalid(car, undefined)) 
        validCarsArray.push (car);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 检查对象中是否存在一般用户输入

    var text = searchBox.input; 
    
    validCarArrays.forEach (function (car) {
        if (car.hasOwnValue(car, text)) {
        displayToUserAsResult (car);
        }
    });
    
    Run Code Online (Sandbox Code Playgroud)

Gib*_*olt 13

假设我们开始

const obj = {foo : "bar"};
Run Code Online (Sandbox Code Playgroud)

检查一个值:

const hasValue = Object.values(obj).includes("bar");
Run Code Online (Sandbox Code Playgroud)

检查属性:

// NOTE: Requires obj.toString() if key is a number
const hasProperty = Object.keys(obj).includes("foo");
Run Code Online (Sandbox Code Playgroud)

多层次价值:

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;
}
Run Code Online (Sandbox Code Playgroud)

多级属性:

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;
}
Run Code Online (Sandbox Code Playgroud)