對於由串訪問對象的屬性,你需要使用[]符號:
var foo = {bar : 2};
foo['bar']; // 2
但是,這不會對嵌套屬性的工作,這裏是我會按照使用Array.reduce和ES6的辦法:
let path = 'items.snippet.title';
let response = JSON.parse(xhr.responseText);
let result = path.split('.').reduce((pre,cur) => {
return pre[cur];
}, response);
success(result);
在第一iterarion前將響應和CUR「項目」返回result.items等,也不會accesing數組索引時雖然,所以你需要添加內減少一些額外的邏輯工作功能。
const [, cur, position] = cur.match(/^([^\[]+)(?:\[(\d+)])?$/);
// filter foo[1] capturing foo and 1, then assign them using destructuring.
// Thanks for edit!
return (Array.isArray(pre[cur]) ? pre[cur][position] : pre[cur]);
使用[lodash](https://lodash.com/docs/4.17.4#get)與其'GET'方法庫:'_.get(JSON.parse(xhr.responseText),路徑)'。 – alexmac
我聽說過它,但我寧願不使用庫只是爲了 – Victofu
我同意Lodash。這正是你需要的。 –