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

我有一个字典对象,填充如下:


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" } 


噜噜哒
浏览 164回答 2
2回答

慕码人8056858

您可以通过创建一个接受字典和匹配数组的函数来概括它,如下所示: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;}这个想法是遍历每个键并将其插入正确的存储桶(对象)中

白衣染霜花

您应该过滤对象键并仅选择您需要的键,然后使用 reduce 创建一个新对象: const vvItems = Object.keys(dictElement)   .filter(key => key.indexOf('VV')>= 1)   .reduce((o, key) => { o[key] = dictElement[key]; return o; }, {})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript