我正在尝试根据放入函数的值获取属性的路径。我搜索了高低,反之亦然,(_.pluck)
。它可以这样工作:
给出
var myObj = {
some: {
thing: 'hello'
},
other: {
thing: 'world'
}
}
getPath(myObj, 'hello');
会返回'some.thing'
或['some', 'thing']
(最好是数组)。
如果这对于不同大小的对象也是灵活的,那将是非常棒的。 +点了解lodash解决方案。
答案 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"]