程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了从打字稿中的键访问值大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决从打字稿中的键访问值?

开发过程中遇到从打字稿中的键访问值的问题如何解决?下面主要结合日常开发的经验,给出你关于从打字稿中的键访问值的解决方法建议,希望对你解决从打字稿中的键访问值有所启发或帮助;

在我的打字稿应用程序中,我有以下格式的 config.Json:

EventFilters": [
      {
        "name": "AppLaunch","Version": "2"
      },{
        "name": "messagedisplayed",{
        "ID": "40021","Version": "2"
      }
    ]

现在,在我的 .ts 文件中,我想读取这些键值对,我使用以下代码:

[![let eventfilters: Object\[\] = this.getEventFilters();           // this method reads the event filters from the config,as shown in the image

let keys: Object\[\];
for (let i: number = 0; i < eventfilters.length; i++) {
    keys = Object.keys(eventfilters\[i\]);
    for (let j: number = 0; j < keys.length; j++) {
        if(eventfilters\[i\]\[keys\[j\]\] === \[/*Parameter 2 to compare*/\]){
            //do something
        }
    }
}]

从打字稿中的键访问值

我正在尝试使用以下“eventfilters[i][keys[j]]”比较“if”语句中的值。但是,它抛出以下错误“类型‘对象’不能用作索引类型。”。

但是,当我在浏览器控制台中使用以下语句时,它会返回键的值,'eventfilters[0][0]'

并且由于 typescript 和 ecmascript 的版本,我无法使用以下内容:

Object.values(eventfilters[i]); 要么 Object.entrIEs(eventfilters[i]);

对这么长的问题深表歉意,并提前致谢。

解决方法

您的“keys”变量被声明为 Object[],并且它不能用作数组中的索引。

在这种情况下,您应该使用字符串数组:

let keys: String[];

但是,由于您没有用于存储对象的类,因此它也不起作用。 angular 不能相信来自对象的所有索引总是一个字符串。

因此,在这种情况下,您可以放弃索引方法并使用类似的方法:

EventFilters.forEach(obj => {
    Object.entries(obj).forEach(([key,value]) => {
        console.log('${key} ${value}');
    });
});

不使用 Object.entries 的方法

您还可以对 EventFilters 数组上的记录强制类型。

const EventFilters: Record<String,any> = [
    {
        "Name": "AppLaunch","Version": "2"
    },{
        "Name": "messageDisplayed",{
        "ID": "40021","Version": "2"
    }
];


let keys: anY[];
for (let i: number = 0; i < EventFilters.length; i++) {
    for (const key in EventFilters[i]) {
        console.log(key);
        console.log(EventFilters[i][key]);
    };
}

大佬总结

以上是大佬教程为你收集整理的从打字稿中的键访问值全部内容,希望文章能够帮你解决从打字稿中的键访问值所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。