Javascript 我试图通过匹配键名从JSON文件中获取值,但它不适用于嵌套键

Javascript 我试图通过匹配键名从JSON文件中获取值,但它不适用于嵌套键,javascript,json,Javascript,Json,我试图通过匹配键名来为JSON文件中的值设置键,但它不适用于嵌套键,可能不是以这种方式加载日期的最佳方式(如果有更好的方式,请告诉我) 您可以使用lodash的get方法- 如果您想要本机实现,以下是该方法的源代码: /** * The base implementation of `_.get` without support for default values. * * @private * @param {Object} object The o

我试图通过匹配键名来为JSON文件中的值设置键,但它不适用于嵌套键,可能不是以这种方式加载日期的最佳方式(如果有更好的方式,请告诉我)


您可以使用lodash的
get
方法-

如果您想要本机实现,以下是该方法的源代码:

 /**
     * The base implementation of `_.get` without support for default values.
     *
     * @private
     * @param {Object} object The object to query.
     * @param {Array|string} path The path of the property to get.
     * @returns {*} Returns the resolved value.
     */
    function baseGet(object, path) {
      path = castPath(path, object);

      var index = 0,
          length = path.length;

      while (object != null && index < length) {
        object = object[toKey(path[index++])];
      }
      return (index && index == length) ? object : undefined;
    }

    function get(object, path, defaultValue) {
      var result = object == null ? undefined : baseGet(object, path);
      return result === undefined ? defaultValue : result;
    }

/**
*“\.get”的基本实现不支持默认值。
*
*@私人
*@param{Object}Object要查询的对象。
*@param{Array | string}path要获取的属性的路径。
*@returns{*}返回已解析的值。
*/
函数baseGet(对象、路径){
路径=路径(路径,对象);
var指数=0,
长度=路径长度;
while(object!=null&&index
您可以使用lodash的
get
方法-

如果您想要本机实现,以下是该方法的源代码:

 /**
     * The base implementation of `_.get` without support for default values.
     *
     * @private
     * @param {Object} object The object to query.
     * @param {Array|string} path The path of the property to get.
     * @returns {*} Returns the resolved value.
     */
    function baseGet(object, path) {
      path = castPath(path, object);

      var index = 0,
          length = path.length;

      while (object != null && index < length) {
        object = object[toKey(path[index++])];
      }
      return (index && index == length) ? object : undefined;
    }

    function get(object, path, defaultValue) {
      var result = object == null ? undefined : baseGet(object, path);
      return result === undefined ? defaultValue : result;
    }

/**
*“\.get”的基本实现不支持默认值。
*
*@私人
*@param{Object}Object要查询的对象。
*@param{Array | string}path要获取的属性的路径。
*@returns{*}返回已解析的值。
*/
函数baseGet(对象、路径){
路径=路径(路径,对象);
var指数=0,
长度=路径长度;
while(object!=null&&index
您可以使用并获取值

const result = value.split(".").reduce((acc, curr) => acc && acc[curr], getPath);
const路径={
路线:{
路径:{
登记册:{
索引:“寄存器”,
},
登录:{
索引:“登录”,
},
},
},
};
常量getByValueByKey=(getPath,value)=>{
const result=value.split(“.”)。reduce((acc,curr)=>acc&&acc[curr],getPath);
控制台日志(结果);
};
getByValueByKey(路径,“routes.path.login.index”)//应该返回login
您可以使用并获取值

const result = value.split(".").reduce((acc, curr) => acc && acc[curr], getPath);
const路径={
路线:{
路径:{
登记册:{
索引:“寄存器”,
},
登录:{
索引:“登录”,
},
},
},
};
常量getByValueByKey=(getPath,value)=>{
const result=value.split(“.”)。reduce((acc,curr)=>acc&&acc[curr],getPath);
控制台日志(结果);
};

getByValueByKey(路径,“routes.path.login.index”)//应该直接返回login
什么是你不访问的
路径.路由.路径.登录.索引
什么是你不直接访问的
路径.路由.路径.登录.索引
什么是预浪漫的更好方法?lodash方法只是一种方法:),你可以使用它或@decpk提供的解决方案,这两种方法都很好。对于预浪漫,哪种方法更好?lodash方法只是一种方法:),您可以使用它或@decpk提供的以下解决方案,这两种方法都很好。