javascript - 如何在不使用 eval 或迭代的情况下使用其他地方指定的访问信息访问嵌套的 json 对象?

标签 javascript json navigation

我有一个类似 JSON 的对象;

 var data = {
 Name : "test name",
 Type : "test type",
 VendorInfo :{
               FirstName : "Vendor First Name",
               LastName : "Vendor Last Name",
               Address : "Vendor Address",
               City : "Vendor City",
               ZipCode : "Zip"
             }
 }

现在我想单独保留有关如何访问数据 var 中的字段的信息

var accessInfo=[
    { fieldName : "Name", actionName : "Edit" },
    { fieldName : "Type", actionName : "Edit" },
    :
    :etc..
 ]

现在在我的 javascript 中,我可以通过 for 循环遍历 accessInfo 数组,例如;

for(var i=0;i<accessInfo.length;i++){<br/> data[accessInfo[i].fieldName] = "changed field";<br/> }

这对于顶级字段工作正常,但我无法弄清楚如何访问层次结构中较低的字段..比如 data.VendorInfo.FirstName、data.VendorInfo.LastName 等

这有可能吗?我尝试输入“VendorInfo.FirstName”和 [VendorInfo][FirstName],但不行..

最佳答案

你只需要解析你的访问规范来遍历目标对象。您可以使用这样的函数:

function getProp(obj, propName) {
   var prop;
   var props = propName.split('.');
   for (var i = 0; i < props.length; i++) {
      prop = obj[props[i]];
      if (typeof prop === 'null' || typeof prop === 'undefined') return prop;
   }
  return prop;
}

关于javascript - 如何在不使用 eval 或迭代的情况下使用其他地方指定的访问信息访问嵌套的 json 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12250506/

相关文章:

html - 如何组合多个 JSON-LD 标记?

javascript - Office 365 Javascript 插件 - 语音合成

javascript - Youtube API、NodeJS 和 Promises 的问题

json - JSON 对象和 DTO 是一回事吗?

json - 将 Clojure 字节数组编码为 JSON

vim - 在 vim 拆分 Pane 之间导航的更简单方法

css - 移动导航栏上的文本位置

android - 如何在 android BottomNavigationView 上获得方形效果而不是波纹?

javascript - 无法将 sourceMap(.map) 文件移动到 Typescript 中的单独文件夹

javascript - 如何从 cshtml 页面导航到网络表单?