我有两个数组
章
[ "Chemistry", "Maths", "Physics" ]
档案
[ "./pranav/Chemistry/tesgdfgdfg.md",
"./pranav/Chemistry/test3.md",
"./pranav/Chemistry/test2.md",
"./pranav/Physics/test45.md",
"./pranav/Physics/test22.md",
"./pranav/Maths/test2.md"
]
我想检查并打印包含章节元素的文件元素 从上面你可以看到化学是三元素所以我想打印
答案 0 :(得分:0)
如果file
是您的文件名数组,
file.filter((filename) => new RegExp("Chemistry").test(filename))
将为您提供数组中包含Chemistry
的所有文件名:
file.filter((filename) => new RegExp("Chemistry").test(filename))
> ["./pranav/Chemistry/tesgdfgdfg.md", "./pranav/Chemistry/test3.md",
"./pranav/Chemistry/test2.md"]
类似的策略可用于查找其中包含Physics
或Math
的策略。
如果您要扩展搜索范围以合并chapter
中的所有字符串,则可以单独循环显示这些键:
chapter.map(function(subject) {
return file.filter((filename) => new RegExp(subject).test(filename));
})
将为您提供一个数组列表,每个数组按顺序包含每个主题的file
匹配元素。观察:
chapter.map(...)
> [[... all files with "Chemistry"...], [... all files with "Physics" ...]
[... all files with "Maths"...]]
最后,如果你想从这些对象创建一个简单的对象,你可以将每个subject
映射到它相应的文件名,你可以这样做:
var result = {}; // create empty object
for (subject of chapter){
result[subject] = file.filter((filename) => new RegExp(subject).test(filename));
}
result
> {"Chemistry" : [... all files with "Chemistry" ...], ... }
或者查看the many ways to merge two arrays into an object together。
答案 1 :(得分:0)
您可以简单地使用该功能并循环通过
文件数组,用于获取所有文件数组元素的数组
每个数组都有搜索词的名称(例如" Chemistry")
我建议你做这个lowercase
。
file = ["./pranav/Chemistry/tesgdfgdfg.md",
"./pranav/Chemistry/test3.md",
"./pranav/Chemistry/test2.md",
"./pranav/Physics/test45.md",
"./pranav/Physics/test22.md",
"./pranav/Maths/test2.md"
];
chapter = ["Chemistry", "Maths", "Physics"];
function getMatching(x) {
this[x] = new Array();
file.forEach(function(e) {
if (e.indexOf(x) >= 0) {
this[x].push(e);
}
})
return this[x];
}
document.write(JSON.stringify(getMatching("Chemistry")));