使用虚线字符串获取对象属性值

时间:2017-02-25 17:50:20

标签: javascript

我试图通过字符串访问对象属性。

我想做的是:

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做这种事情?

3 个答案:

答案 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]];
}

Demo

答案 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'