訪問對象鍵我有以下使用Lodash`_.get`使用括號符號
const key = 'foo';
const test = { foo: { bar: 23 } };
和我想使用lodash get
訪問的test[key].bar
值。
我想用括號標記的第一個指標......
_.get(test, '[key].bar'); // results in undefined
肯定有辦法......
訪問對象鍵我有以下使用Lodash`_.get`使用括號符號
const key = 'foo';
const test = { foo: { bar: 23 } };
和我想使用lodash get
訪問的test[key].bar
值。
我想用括號標記的第一個指標......
_.get(test, '[key].bar'); // results in undefined
肯定有辦法......
你需要把的key
的值到您的路徑字符串:
_.get(test, key + '.bar');
在ES2015你可以使用一個template literal(插值字符串):
_.get(test, `${key}.bar`);
如果'key'不是一個合法的標識符? – Scimonster
@Scimonster如果我明白這個問題,那不是一個問題:http://jsbin.com/xuyiyiroto/edit?html,js,console – joews
您可以傳遞一個數組來定義評估路徑。
這是一個非常乾淨的解決問題的方法:
const test = {foo: {bar: 23}}
const key = 'foo'
console.log(_.get(test, [key, 'bar'])) // 23
<script src='https://cdn.jsdelivr.net/lodash/4.16.6/lodash.min.js'></script>
const test = { foo: { bar: 23 } };
const key = 'foo';
const search = key + '.bar';
const result = _get(test, search);
儘管這段代碼可能解決這個問題,[包括解釋](http ://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)真的有助於提高你的文章的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – VDWWD
這是使用全局變量,用括號括起來時的建議。
function getValue(object, path) {
return path.replace(/(?=\[)/g, '.').split('.').reduce(function (o, k) {
var m = k.match(/^\[([^\]]*)\]$/);
return m ? (o || {})[window[m[1]]] : (o || {})[k];
}, object);
}
var test = { foo: { bar: 23 } },
key = 'bar';
console.log(getValue(test, 'foo[key]'));
你的第一個例子並不爲我工作。我懷疑lodash在這裏使用eval。 – Scimonster
謝謝@scimonster。我以爲我測試過,但我也看到它現在不工作...將刪除 – sfletche