慕勒3428872
2019-05-22 15:04:28
使用字符串鍵訪問嵌套的JavaScript對象我有這樣的數(shù)據(jù)結(jié)構(gòu):var someObject = { 'part1' : { 'name': 'Part 1', 'size': '20', 'qty' : '50' }, 'part2' : { 'name': 'Part 2', 'size': '15', 'qty' : '60' }, 'part3' : [ { 'name': 'Part 3A', 'size': '10', 'qty' : '20' }, { 'name': 'Part 3B', 'size': '5', 'qty' : '20' }, { 'name': 'Part 3C', 'size': '7.5', 'qty' : '20' } ]};我想使用這些變量訪問數(shù)據(jù):var part1name = "part1.name";var part2quantity = "part2.qty";var part3name1 = "part3[0].name";part1name應(yīng)該用someObject.part1.name's值填充,即“Part 1”。part2quantity與60相同。無論如何使用純javascript或JQuery實(shí)現(xiàn)這一點(diǎn)?
5 回答

呼如林
TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊
你必須自己解析字符串:
function getProperty(obj, prop) {
var parts = prop.split('.');
if (Array.isArray(parts)) {
var last = parts.pop(),
l = parts.length,
i = 1,
current = parts[0];
while((obj = obj[current]) && i < l) {
current = parts[i];
i++;
}
if(obj) {
return obj[last];
}
} else {
throw 'parts is not valid array';
}
}
這要求您還使用點(diǎn)表示法定義數(shù)組索引:
var part3name1 = "part3.0.name";
它使解析更容易。
添加回答
舉報(bào)
0/150
提交
取消