Js或ES6当字段具有2个或更多嵌套级别时,按路径字符串获取对象字段,如myObj.one.two.three.field

Com*_*ode 0 javascript ecmascript-6

如果我有一个总是相同的基础对象:project但有时我必须动态访问它的字段,如果它可以是1个或多个嵌套对象,我该如何访问它的字段,例如:

function (myPath){
  return project[myPath];

}
Run Code Online (Sandbox Code Playgroud)

这在使用project["oneField"]时有效myPath("oneField")

但是当它嵌套到更多级别时它不起作用:

myPath("one.two.fieldName") 不起作用: project["one.two.fieldName"]

不是这样的: project."one.two.fieldName"

tri*_*cot 8

你可以这样做(ES6):

function getVal(project, myPath){
    return myPath.split('.').reduce ( (res, prop) => res[prop], project );
}

// sample data
var project = { one: { two: { fieldName: 'gotcha' } } };

// get inner field value
console.log( getVal(project, 'one.two.fieldName') );
Run Code Online (Sandbox Code Playgroud)