使用 Angular 在 Typescript 中读取 JSON 常量的值键

Read a value key of a JSON constant in Typescript with Angular

我正在尝试使用 Angular 读取 Typescript 中 JSON 常量中的一个值,但只是为了性能,我不知道是否有一种方法可以使用 属性 包含在框架中(或者如果它存在另一种做得更好的方法,当然)。这是我的 JSON 常量值:

    const myConstant= {
    data : [
      {
          key1: "5",
          key2: "extract",
          key3: "unique1"
      },
      {
          key1: "5",
          key2: "extract",
          key3: "unique2"
      },
      {
        key1: "5",
          key2: "extract",
          key3: "unique3"
    }
  ]
  };

此常量已导出到另一个 TS 文件中,只是为了找到 key3 值以在条件中验证此值。

 validateInfo(cod:string){
    for (var i = 0; i < myConstant.data.length; i++){
      var obj = myConstant.data[i];
      for (var key in obj){
        var value = obj[key];
        if (key== "key3"){
          if (value == cod){
            return true;
          }
        }
      }
    }
    return false;
  }

所以我的问题是,有没有一种方法可以在不进行循环的情况下提取“key3”值?喜欢

myConstant.find(data.key3,'unique3');

这是什么原因?我试图在前端隐藏一个视图,以防用户不允许使用 JSON 信息访问(上一个函数为真或假):

<div class="ts-cntnr" *ngIf="allowedInfo" >

显然有!有很多方法可以满足您的要求,一种更简单的方法是使用 some() 检查是否至少有 一个带有名为 key3 键的对象,返回一个布尔结果,这是您想要的输出。

const myConstant = {
  data: [{
      key1: "5",
      key2: "extract",
      key3: "unique1"
    },
    {
      key1: "5",
      key2: "extract",
      key3: "unique2"
    },
    {
      key1: "5",
      key2: "extract",
      key3: "unique3"
    }
  ]
};

console.log(myConstant.data.some(subData => Object.keys(subData).includes("key3")))

// UPDATE
console.log(myConstant.data.some(subData => Object.keys(subData).includes("key3") && subData["key3"] == "unique3"))

你可以试试这个代码

  var item= findItem(myConstant.data, "key3","unique3");

函数

function findItem(items, key,value) {
      const result = items.filter(function(item) {
       for (const property in item)
         if(property==key && item[property]==value) return item;
        });
       return result != undefined ? result[0] : null;
    };

结果

{
  "key1": "5",
  "key2": "extract",
  "key3": "unique3"
}