我正在尝试获取数组中包含特定值的项目。
假设我有一个数组
var arr = ["boat.gif", "goat.png", "moat.jpg"];
我有一个变量var imageName = "boat"
由于我不知道 imageName
的文件扩展名,因此我需要一种方法来通过我的数组运行它并获取 "boat.gif"
作为输出。
我用正则表达式尝试过
let filesString = arr.join(" ");
let regExName = new RegExp(imageName, "i");
let fileName = regExName.exec(filesString),
file = fileName.input.substr(fileName.index, 5);
它有效,但我希望有更好的方法
我希望这是有道理的
最佳答案
通过 .includes
或 .startsWith
进行过滤可能更容易:
var arr = ["boat.gif", "goat.png", "moat.jpg"];
var imageName = "boat";
const found = arr.find(str => str.includes(imageName));
console.log(found);
或
var arr = ["boat.gif", "goat.png", "moat.jpg"];
var imageName = "boat";
const found = arr.find(str => str.startsWith(imageName));
console.log(found);
如果目录中可能存在以相同单词开头的其他文件(例如 boats.gif
),则像您正在做的那样构造一个正则表达式,但向前查找 .
:
var arr = ["boat.gif", "goat.png", "moat.jpg"];
var imageName = "boat";
const pattern = new RegExp(imageName + '(?=\.)');
const found = arr.find(str => pattern.test(str));
console.log(found);
关于javascript - 返回包含特定值的数组中的整个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59595962/