为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 Typescript 中的字典对象中获取匹配值?

如何从 Typescript 中的字典对象中获取匹配值?

噜噜哒 2022-07-21 10:52:45
我有一个字典对象,填充如下:const myDictionaryElement = this.myDictionary["abc"];在这里,myDictionaryElement具有以下值:ACheckStatus: "PASS"QVVStatus: "READY"VVQStatus: "READY"QTTStatus: "READY"QBCTTStatus: "READY"CStatus: "FAIL"我想创建一个对象,key-value以便密钥在中间匹配的所有对VV都应存储在对象valuesVV中,如下所示:const valuesVV = { QVVStatus: "READY" };类似key-value地,密钥在中间匹配的所有对TT都应存储在对象valuesTT中,如下所示:const valuesTT = { QTTStatus: "READY", QBCTTStatus: "READY" } ;并且所有key-value键不匹配VV且TT位于中间的对应存储在对象valuesOther中,如下所示:const valuesOther = { ACheckStatus: "PASS", VVQStatus: "READY", CStatus: "FAIL"  } ;为了实现关于输出,我正在使用hasOwnProperty字典,但它不起作用const valuesVV = myDictionaryElement.hasOwnProperty('*VV*');  // It is returning boolean false. The desired output is { QVVStatus: "READY" } 
查看完整描述

2 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

您可以通过创建一个接受字典和匹配数组的函数来概括它,如下所示:


const dict = {

  ACheckStatus: "PASS",

  QVVStatus: "READY",

  VVQStatus: "READY",

  QTTStatus: "READY",

  QBCTTStatus: "READY",

  CStatus: "FAIL"

};


const matching = ['VV', 'TT', 'SS'];


function matchInput(input, matches) {

  // will have matched object in the index of the match and those without a match 

  // at the end

  const res = [];


  Object.keys(input).forEach(key => {

    // flag if the key wasn't matched to add it to no matches object

    let matched = false;


    matches.forEach((match, i) => {

      if (key.indexOf(match) > 0) {

        matched = true;

        if (!res[i]) res[i] = {};

        res[i][key] = input[key];

      }

    });


    if (!matched) {

      if (!res[matches.length]) res[matches.length] = {};

      res[matches.length][key] = input[key];

    }

  });


  return res;

}

这个想法是遍历每个键并将其插入正确的存储桶(对象)中


查看完整回答
反对 回复 2022-07-21
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

您应该过滤对象键并仅选择您需要的键,然后使用 reduce 创建一个新对象:

 const vvItems = Object.keys(dictElement)
  .filter(key => key.indexOf('VV')>= 1)
  .reduce((o, key) => { o[key] = dictElement[key]; return o; }, {})


查看完整回答
反对 回复 2022-07-21
  • 2 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信