Javascript 比较两个数组并删除部分匹配的项
我需要比较两个数组的部分/子字符串匹配。如果找到了这些项,我希望从原始阵列中删除匹配项,或者创建一个新阵列,其中包含所有未进行部分匹配的项Javascript 比较两个数组并删除部分匹配的项,javascript,arrays,google-apps-script,compare,Javascript,Arrays,Google Apps Script,Compare,我需要比较两个数组的部分/子字符串匹配。如果找到了这些项,我希望从原始阵列中删除匹配项,或者创建一个新阵列,其中包含所有未进行部分匹配的项 var originalArray = ['www.google.com/opq', 'www.yelp.com/abc', 'www.yahoo.com/klm', 'www.bing.com/xyz', 'www.google.com/124']; var itemsToBeRemoved = ['google.com', 'yahoo.com'];
var originalArray = ['www.google.com/opq', 'www.yelp.com/abc', 'www.yahoo.com/klm', 'www.bing.com/xyz', 'www.google.com/124'];
var itemsToBeRemoved = ['google.com', 'yahoo.com'];
// DESIRED ARRAY: An array with items that did not have a partial match. For example:
var cleanArray = ['www.yelp.com/abc', 'www.bing.com/xyz']
当完全/精确匹配时,它工作。
但这不是我需要的
function cleanFullMatch(){
// Your main array
var originalArray = ['www.google.com/rugby', 'www.yelp.com/abc', 'www.yahoo.com/tennis', 'www.bing.com/xyz', 'www.google.com/football'];
Logger.log(originalArray);
// This array contains strings that needs to be removed from main array
var itemsToBeRemoved = ['www.google.com/rugby', 'www.yahoo.com/tennis', 'www.google.com/football'];
var cleanObj = {};
itemsToBeRemoved.forEach( e => cleanObj[e] = true);
itemsToBeRemoved.forEach( e => itemsToBeRemoved[e]= true);
var cleanArray = originalArray.filter(function(val){ return !cleanObj [val] })
Logger.log(cleanArray);
}
可以使用创建正则表达式并删除与正则表达式不匹配的元素
示例代码:
函数cleanFullMatch(){
//您的主阵列
var originalArray=[“www.google.com/rugby”,“www.yelp.com/abc”,“www.yahoo.com/netsing”,“www.bing.com/xyz”,“www.google.com/football”];
Logger.log(原始数组);
//此数组包含需要从主数组中删除的字符串
var itemsToBeRemoved=['google.com','yahoo.com','google.com'];
//循环通过itemsToBeRemove
itemsToBeRemoved.forEach(函数(rgx){
//将itemsToBeRemove的每个元素转换为正则表达式
var re=新的RegExp(rgx);
//通过删除与正则表达式匹配的元素来筛选数组
//test()方法检查字符串是否与正则表达式匹配
originalArray=originalArray.filter(word=>!re.test(word));
});
Logger.log(原始数组);
}
样本输出:
您可以使用创建正则表达式并删除与正则表达式不匹配的元素
示例代码:
函数cleanFullMatch(){
//您的主阵列
var originalArray=[“www.google.com/rugby”,“www.yelp.com/abc”,“www.yahoo.com/netsing”,“www.bing.com/xyz”,“www.google.com/football”];
Logger.log(原始数组);
//此数组包含需要从主数组中删除的字符串
var itemsToBeRemoved=['google.com','yahoo.com','google.com'];
//循环通过itemsToBeRemove
itemsToBeRemoved.forEach(函数(rgx){
//将itemsToBeRemove的每个元素转换为正则表达式
var re=新的RegExp(rgx);
//通过删除与正则表达式匹配的元素来筛选数组
//test()方法检查字符串是否与正则表达式匹配
originalArray=originalArray.filter(word=>!re.test(word));
});
Logger.log(原始数组);
}
样本输出:
清除原始数组的元素
,以便在任何过滤的元素中都不存在任何已删除的项
有很多方法可以检查子字符串是否包含在另一个字符串中,如其他人所说的,如和
然后,您可以以不同的方式迭代所有这些itemsToBeRemoved
。例如,您可以使用:
或者,或者:
正如您所看到的,过滤过程可以简化为一行。将原始数组的元素删除
,以便在任何过滤的元素中都不存在任何项
有很多方法可以检查子字符串是否包含在另一个字符串中,如其他人所说的,如和
然后,您可以以不同的方式迭代所有这些itemsToBeRemoved
。例如,您可以使用:
或者,或者:
如您所见,过滤过程可以简化为一行。使用或使用或谢谢。很好用!在一行代码中。。。有很多东西要学…@JoaquinPagliettini不客气,很高兴你的问题解决了。如果有帮助的话,请考虑这个答案。谢谢。很好用!在一行代码中。。。有很多东西要学…@JoaquinPagliettini不客气,很高兴你的问题解决了。请考虑这个答案,如果这有帮助的话,谢谢!效果也很好。我也可以在其他场景中使用“new RegExp”。@Joaquin Pagliettini-如果您觉得我的答案对您有用,请随时接受并投票支持我的答案。谢谢!效果也很好。我也可以在其他场景中使用“new RegExp”。@Joaquin Pagliettini-如果您觉得我的答案对您有用,请随意接受并投票支持我的答案。
function cleanFullMatch(){
var originalArray = ['www.google.com/rugby', 'www.yelp.com/abc', 'www.yahoo.com/tennis', 'www.bing.com/xyz', 'www.google.com/football'];
var itemsToBeRemoved = ['google.com', 'yahoo.com'];
var cleanArray = originalArray.filter(element => !itemsToBeRemoved.some(item => element.includes(item)));
console.log(cleanArray);
}
var cleanArray = originalArray.filter(element => itemsToBeRemoved.every(item => !element.includes(item)));