在对象中搜索键的值/类型

时间:2014-01-10 22:16:22

标签: javascript arrays

我有一个返回对象的递归函数。此对象的深度因输入而异,并且键也依赖于输入。在JSON格式中,对象可以如下所示:

{
    a: {
        b: {
            c: 3 // Keys with an integer value are the target of the search
        },
        c: 2
    }
}

如何找到名为c或包含整数类型值的键?

2 个答案:

答案 0 :(得分:0)

你可以这样做:

function search(obj) {
    for (prop in obj) {
        if (obj.hasOwnProperty(prop)) {
            if (prop === "c") {
                 console.log(obj[prop]);    // or whatever you want to do here
            } else if (typeof obj[prop] === "object") {
                search(obj[prop]);
            }
        }
    }
}

请参阅fiddle

答案 1 :(得分:0)

Lodash非常适合这些:

var val = _(obj).map(function recursive(val, key) {
   if (key === 'c')
       return val;
    else if (typeof val === "object") 
       return _.map(val, recursive);
}).flatten().value();

Lodash docs:http://lodash.com/docs

jsFiddle:http://jsfiddle.net/JVf6D/2/