javascript - 如何过滤掉数组中不包含特定值的单词?
问题描述
我正在尝试制作这个脚本,我可以在其中填写我想从 array2 中过滤掉的 array1 中的单词。所以我想得到一个新数组,其中只有array2中的单词不包含array1中的任何值。
这就是我现在所拥有的,但它不能正常工作,因为循环多次通过它,最后每个单词都多次进入它。现在我在 array1 中有 3 个值,每个单词都会被检查 3 次,所以最后每个单词都会进入最终数组。我过滤掉了重复的单词
有人对此有解决方案吗?JS小提琴链接:https ://jsfiddle.net/45z1mpqo/
var array2 = ["January", "February", "March", "April", "May", "June"]
var array1 = ["uary", "May", "December"];
var notMatched = [];
let counter = 0;
for(var b = 0; b < array1.length; b++) {
for(var i = 0; i < array2.length; i++) {
if(array2[i].indexOf(array1[b]) != -1)
{
//console.log(stringxa[i]);
}
else{
notMatched[counter] = array2[i];
counter++;
}
}
}
//this filter will remove duplicate elements from array
var unique = notMatched.filter(function(elem, index, self) {
return index == self.indexOf(elem);
});
document.getElementById("text").innerHTML = unique;
<p id='text'>hi</p>
解决方案
您可以使用filter()
on并检查字符串中是否包含array2
任何值array1
some()
var array2 = ["January", "February", "March", "April", "May", "June"]
var array1 = ["uary", "May", "December"];
let res = array2.filter(x => array1.some(a => x.includes(a)));
console.log(res)
推荐阅读
- powershell - 作为命令的结果在 Dockerfile 中分配环境变量
- python - 如何抓取仅显示有限行数的表数据库 HTML PYTHON
- java - 如何优雅地释放 CXF-Endpoint 的端口?
- spring-boot - Spring Data Jpa 与 where 子句的一对一映射
- reactjs - 如何使用 React 路由器在页面离开时显示弹出窗口?
- c++ - 如何隐藏 Windows 程序的控制台窗口?
- python - RGB 值和像素
- angular - Ionic Angular 显示和解析来自 API 的 JSON 数据
- ios - 当ios应用程序在后台使用SwiftUI时如何播放SystemSound
- json - mat-table 角度材料数据源格式