javascript - 检查对象 javascript 中是否存在嵌套属性

标签 javascript object properties nested

我已经查看了类似问题的一些答案,但是,我想以不同的方式提出我的问题。

假设我们有一个类似 "level1.level2.level3. ..." 的字符串,它指示名为 Obj 的对象中的嵌套属性。

关键是我们可能不知道这个字符串中存在多少个嵌套属性。例如,它可能是“level1.level2”或“level1.level2.level3.level4”。

现在,我想编写一个函数,将 Obj 和属性字符串作为输入,简单地告诉我们对象中是否存在这样的嵌套属性(假设 true或 false 作为输出)。

<小时/>

更新: 感谢@Silvinus,我找到了经过细微修改的解决方案:

        private checkNestedProperty(obj, props) {
        var splitted = props.split('.');
        var temp = obj;
        for (var index in splitted) {
            if (temp[splitted[index]] === 'undefined' || !temp[splitted[index]]) return false;
            temp = temp[splitted[index]];
        }
        return true;
    }

最佳答案

您可以使用Array#every()及其 thisArg,通过迭代键并检查它是否在给定对象中。

var fn = function (o, props) {
    return props.split('.').every(k => k in o && (o = o[k], true));
}

console.log(fn({}, "toto.tata"));                                   // false
console.log(fn({ toto: { tata: 17 } }, "toto.tata"));               // true
console.log(fn({ toto: { tata: { tutu: 17 } } }, "toto.foo.tata")); // false
console.log(fn({ toto: { tata: false } }, "toto.tata")); // true

关于javascript - 检查对象 javascript 中是否存在嵌套属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37019746/

相关文章:

javascript - 将类似数组的对象属性转换为数组不起作用

javascript - 将对象插入数组

javascript - Node.js 集群在所有 8 个进程上重复相同的任务

javascript - 在 Javascript 中将字符串转换为帕斯卡大小写(又名 UpperCamelCase)

javascript - 将返回值显示为文本

vb.net - MustOverride 属性的私有(private)或 protected 集

javascript - 在 React 中渲染 child ,丢失 Prop 数据

javascript - 我怎样才能停止点击联系人按钮上的功能 window.open 在 parent

javascript - 如何在Javascript中正确声明和调用3维 map ?

c# 如何连接一个 var 与另一个 var 以指向应用程序 SettingsName?