我觉得这应该很容易,但我遇到了寻找解决方案的问题。
我有一系列文件扩展名:
var items = ["PDF", "XLS"]
我还有一个文件对象数组:
files = [{format: "TXT"},{format: "PDF"}]
我喜欢一个可以传递文件对象数组的函数,如果任何文件的格式都在items数组中,那么它应该返回true。
提前感谢您的帮助。
function hasItemExtension() {
files.forEach(file => {
if(items.indexOf(file.format) != -1) {
return true;
}
}
};
答案 0 :(得分:0)
我发现你试图用forEach()
打破return
,显然根据doc无法完成:
除了by之外,没有办法停止或中断forEach()循环 抛出一个例外。如果需要这样的行为,请使用forEach()方法 是错误的工具。使用普通循环或for...of代替....
我已经找到了这个小例子,我设置了布尔变量并在匹配时修改它:
var items = ['PDF', 'XLS'];
var files = [{ format: 'PDF' }, { format: 'XLS' }];
function hasItemExtension(items, files) {
let result = false;
files.forEach(function(file){
let f = file.format;
if (items.indexOf(f) !== -1){
result = true;
}
});
return result;
}
let sol = hasItemExtension(items, files);
console.log(sol);
答案 1 :(得分:0)
只需使用javascript&#39的array.some()方法
var items = ["PDF", "XLS"]
var files = [{format: "TXT"},{format: "PDF"}]
console.log(files.some(file => items.indexOf(file.format) > -1))