我试图通过字符串访问对象属性。
我想做的是:
const data = {
key: {
subKey: 'value'
}
};
const theString = 'key.subKey';
function accessPropFromString(obj, stringCall) {
// I don't know what to put on here
}
console.log(accessPropFromString(data, theString)) // prints 'value'
我绝对不知道如何实现这一目标......
我如何用JavaScript做这种事情?
答案 0 :(得分:2)
您可以拆分路径并减少对象。
const getValue = (object, path) => path.split('.').reduce((o, k) => (o || {})[k], object),
data = { key: { subKey: 'value' } },
theString = 'key.subKey';
console.log(getValue(data, theString));
答案 1 :(得分:1)
这应该有效。假设你有固定的格式。
function accessPropFromString(obj, stringCall) {
var splitter =stringCall.split(".");
return data[splitter[0]][splitter[1]];
}
答案 2 :(得分:1)
见内联评论:
const data = {
key: {
subKey: 'value'
}
};
const theString = 'key.subKey';
function accessPropFromString(obj, stringCall) {
// Split the string into individual parts
var parts = stringCall.split(".");
// You can use strings to lookup properties on objects
// if you use bracket notation, like this;
// parts["key"]["subKey"]
// So, parts[0] will be "key" and parts[1] will be "subKey"
return obj[parts[0]][parts[1]];
}
console.log(accessPropFromString(data, theString)) // prints 'value'