我已经为此浪费了 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/