javascript - 我需要在对象数组中找到一个键并将其与正则表达式匹配

标签 javascript arrays json regex object

我已经为此浪费了 3 天多的时间,但仍然没有成功。这可能就像大海捞针一样,但我仍然需要这样做。

我正在尝试在对象数组中查找 key ,以及它是否包含 (a)(b)将某个键设置为 true .

但是,我在某个地方犯了错误,但我不知道在哪里。

这是我现在拥有的:

let reg = /\((.+?)\)/;
let aggregatedArray: Array<any> = [];
const allWeeksDescription = this.selectedPlan.weeklyOffer;
console.log(allWeeksDescription);
let prop = 'description';
for (prop in allWeeksDescription) {
    allWeeksDescription[prop].forEach(function(k:any) {
          aggregatedArray.push(k.description);
          console.log(aggregatedArray);
     })
}

但是,我在控制台中收到此错误(不过,之后我确实成功获得了 console.logged):

ORIGINAL EXCEPTION: allWeeksDescription[prop].forEach is not a function

我需要做的就是找到 key ('description')如果它的值与正则表达式匹配成功,则设置另一个 key ('exists')true 。如果没有,请保持原样 - false 。应该使用存储在该变量中的正则表达式来完成匹配:

let reg = /\((.+?)\)/;

在控制台中我收到如下内容:

{
   monday: [
         {
            description: "(a)",
            exists: false
         },
         {
            description: "(a)",
            exists: false
         },
         {
            description: "(a)",
            exists: false
         },
         {
            description: "(a)",
            exists: false
         },
         {
            description: "(a)",
            exists: false
         }
        ]
tuesday:  [
         {
            description: "test",
            exists: false
         },
         {
            description: "test",
            exists: false
         },
         {
            description: "test",
            exists: false
         },
         {
            description: "test",
            exists: false
         },
         {
            description: "test",
            exists: false
         }
        ]
     }

总之,我需要获得 description keys并将它们与 Regex 匹配。如果匹配,则 key exists值应为 true 。如果没有,应该保持现在的样子 - false .

请帮我解决这个问题,我为此损失了太多天。

谢谢大家。

最佳答案

以下是如何在匿名类型对象上运行 foreach 循环。您需要做的是获取对象的所有键,并假设它们具有相同的结构,您需要确保它们确实与模式匹配。

let reg = /\((.+?)\)/;
let aggregatedArray = [];
const allWeeksDescription = this.selectedPlan.weeklyOffer;
console.log(allWeeksDescription);
let prop = 'description';
Object.keys(allWeeksDescription).forEach(function(k) {
    reg.match(allWeeksDescription[k]) && aggregatedArray.push(k.description);
    console.log(aggregatedArray);
})

关于javascript - 我需要在对象数组中找到一个键并将其与正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42774168/

相关文章:

java - 如何将 String 的所有字符分组到一个二维字符数组中?

javascript - Chrome 扩展程序/应用程序设置 Javascript

javascript - 如何使用 .delay(x).animate( {'opacity' :'1' },x); 淡化不透明度为 0 的每个内部元素?

javascript - 当使用 ajax 方式进行登录状态检查时,Internet Explorer 会强制显示 304

c - 将数组称为指针

c - 从数组中删除数字?

java - 如何为列表<类名>创建 JSONArray

PHP JSON 返回 Jquery

Javascript 移动重定向问题

javascript - 防止点击 React-Fiber Three.js 中的对象