使用 Angular 在 Typescript 中读取 JSON 常量的值键
Posted
技术标签:
【中文标题】使用 Angular 在 Typescript 中读取 JSON 常量的值键【英文标题】:Read a value key of a JSON constant in Typescript with Angular 【发布时间】:2022-01-22 05:42:28 【问题描述】:我正在尝试使用 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 信息(前一个函数为 true 或 false)访问:
<div class="ts-cntnr" *ngIf="allowedInfo" >
【问题讨论】:
【参考方案1】:你可以试试这个代码
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"
【讨论】:
【参考方案2】:显然有!有很多方法可以满足您的要求,一种更简单的方法是使用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"))
【讨论】:
这是一个很好的代码,但我需要的真正目的是在 JSON 中检查 key3 的值。即,我想比较传入的值(来自“cod”参数)并检查 JSON 中是否存在该代码(验证 unique3 是否在列表中) 啊,仍然不需要更改。只需添加您要求的比较:) 我已经更新了代码。 哦,谢谢,它看起来很棒。但现在我遇到了一个问题,当我尝试编译时,IDE 显示此错误“此条件将始终返回 'false',因为类型 'number' 和 'string' 没有重叠。”在更新的部分。所以我将它划分为一个干净的 JSON。但是当我设置 subData.key3["key3"] 它显示我未定义。我不知道这是 JSON 限制还是我需要做一些额外的事情。 我明白了。我不确定您用于原始数据的接口类型。你可以尝试用这个替换我的代码的更新部分:console.log(myConstant.data.some((subData: [x: string]: string; ) => Object.keys(subData).includes("key3 ") && subData["key3"] == "unique3")) 试试const myConst: any = getCodes();
或const myConst: any[] = getCodes();
以上是关于使用 Angular 在 Typescript 中读取 JSON 常量的值键的主要内容,如果未能解决你的问题,请参考以下文章
Typescript - 如何在 Angular2 中正确使用 jsPDF?
在Angular / Typescript中使用整数和字母对数组进行排序
使用 Angular 在 Typescript 中读取 JSON 常量的值键
如何在 TypeScript Angular 中使用外部 Javascript