Я пытаюсь использовать string
для таргетинга на object
Изменить str = "abc"
Для abc
a = {
b: {
c: {
d: 'working'
}
}
}
function go(o, v) {
console.log(str[v])
}
str = "a.b.c" // reference to an object
go(str, "d")
a = {
b: {
c: {
d: 'working'
}
}
}
function go(o, v) {
console.log(a.b.c[v])
}
str = "a.b.c"
go(str, "d")
Вы можете разделить строку на "."
а затем используйте функцию reduce()
в результирующем массиве для итеративного сверления в ваш объект:
var a = {
b: {
c: {
d: 'working'
}
}
};
function go(o, v) {
return (o + "." + v).split(".").reduce((y,z) => y[z], this);
}
var result = go('a.b.c', 'd');
console.log(result);
Вы хотите использовать библиотеку с именем object-path
:
https://www.npmjs.com/package/object-path
Таким образом вы можете получить доступ к значению через:
str = "a.b.c"
objectPath.get(a, str);
Вы можете попробовать использовать функцию eval()
https://www.w3schools.com/jsref/jsref_eval.asp
a = { b: { c: { d: 'working' } } }
function go(o, v) {
console.log(eval(str)[v])
}
str = "a.b.c"
go(str, "d")
abcd
.