Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 比较两个数组并删除部分匹配的项_Javascript_Arrays_Google Apps Script_Compare - Fatal编程技术网

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)));