Javascript 使用Lodash`\.get`使用括号表示法访问对象键

Javascript 使用Lodash`\.get`使用括号表示法访问对象键,javascript,lodash,Javascript,Lodash,我有以下几点 const key = 'foo'; const test = { foo: { bar: 23 } }; 我想使用lodashget来访问test[key].bar的值 我想在第一个指示器上使用括号符号 _.get(test, '[key].bar'); // results in undefined 当然有一种方法…您需要将键的值放入路径字符串中: _.get(test, key + '.bar'); 在ES2015中,您可以使用(插值字符串): 您可以传递一个数组来定义

我有以下几点

const key = 'foo';
const test = { foo: { bar: 23 } };
我想使用lodash
get
来访问
test[key].bar的值

我想在第一个指示器上使用括号符号

_.get(test, '[key].bar'); // results in undefined
当然有一种方法…

您需要将
键的值
放入路径字符串中:

_.get(test, key + '.bar');
在ES2015中,您可以使用(插值字符串):


您可以传递一个数组来定义求值路径

对于您的问题,这是一个非常干净的解决方案:

const test={foo:{bar:23}
常量键='foo'
console.log(u.get(test,[key,'bar])//23

这是一个使用全局变量的提案,用括号括起来

函数getValue(对象、路径){
返回路径。替换(/(?=\[)/g,'.')。拆分('.')。减少(函数(o,k){
var m=k.match(/^\[([^\]]*)\]$/);
返回m?(o |{})[window[m[1]]:(o |{})[k];
},对象);
}
var test={foo:{bar:23}},
键='bar';
log(getValue(测试'foo[key]')在获取之前解析JSON
JSON.parse()


如果
key
不是合法的标识符怎么办?@scimonester如果我理解了这个问题,那就不是问题:如果key包含dot,那就是问题。你的第一个例子对我不起作用。我怀疑洛达斯在这里使用eval。谢谢@scimonester。我想我已经测试过了,但我也看到它现在不起作用了…将会删除。虽然这个代码片段可能会解决这个问题,但确实有助于提高您的帖子的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。
_.get(test, `${key}.bar`);
const test = { foo: { bar: 23 } };
const key = 'foo';
const search = key + '.bar';

const result = _get(test, search);
const test = { foo: { bar: 23 } };
const key = 'foo';


const result = _get(JSON.parse(test), key );