按值获取对象键路径

时间:2015-04-28 03:12:22

标签: javascript arrays object

我正在尝试根据放入函数的值获取属性的路径。我搜索了高低,反之亦然,(_.pluck)。它可以这样工作:

给出

var myObj = {
  some: {
    thing: 'hello'
  },
  other: {
    thing: 'world'
  }
}

getPath(myObj, 'hello');会返回'some.thing'['some', 'thing'](最好是数组)。

如果这对于不同大小的对象也是灵活的,那将是非常棒的。 +点了解lodash解决方案。

1 个答案:

答案 0 :(得分:0)

这只有两个层次,一个快速的解决方案:

function getPath (obj, name) {
    var location = null;

    for (var lvl_1 in obj) {
        if (obj[lvl_1] === name) {
            location = lvl_1;
            return location;
        } else if (typeof obj[lvl_1] === 'object') {
            for (var lvl_2 in obj[lvl_1]) {
                if (obj[lvl_1][lvl_2] === name) {
                    location = lvl_1 + '.' + lv;_2;
                    return location;
                }
            }
        }
    }

    return location;
}

我用变量

运行了这个
  

> getPath(myObj, 'hello')

     

"some.thing"

如果你想要一个数组,请将其拆分:

  

> getPath(myObj, 'hello').split('.')

     

["some", "thing"]