Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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_Regex - Fatal编程技术网

Javascript 在数据数组中查找正则表达式数组的元素

Javascript 在数据数组中查找正则表达式数组的元素,javascript,arrays,regex,Javascript,Arrays,Regex,问题 我需要比较两个数组以获得所有缺少的元素。困难在于,有些值不区分大小写 数据 首先,我有两个阵列: const data = [ 'There', 'is', 'a', 'Word', 'there' ] // pure data const query = [ /^There$/i, /^is$/, /^a$/, /^Word$/, /^there$/ ] // RegEx for case sensitivity 第二个用于从数据库中获取一些数据,结果如下所

问题

我需要比较两个数组以获得所有缺少的元素。困难在于,有些值不区分大小写

数据

首先,我有两个阵列:

const data  = [ 'There', 'is', 'a', 'Word', 'there' ]           // pure data
const query = [ /^There$/i, /^is$/, /^a$/, /^Word$/, /^there$/ ]    // RegEx for case sensitivity
第二个用于从数据库中获取一些数据,结果如下所示

数据库查询结果数据

现在我想知道结果中缺少原始数据的哪些元素

正如您所看到的,第一个元素应该不区分大小写,这意味着它存在于dbResult数组中

预期结果

[ 'a', 'Word' ]
  • Word
    区分大小写->未在结果中找到

  • 结果中有
    不区分大小写->找到

  • 我失败的尝试

    [ 'a', 'Word' ]
    
    我已经尝试过使用
    差异(data,dbResult)
    ,但是使用该
    后,结果数组中也会出现
    ,不应该出现这种情况,因为它应该不区分大小写,并且在dbResult数组中存在一个现有的
    那里
    这里有一种方法:

    const missing = data.filter((word, i) => {
      return !dbResult.some(res => res.match(query[i]))
    })
    
    // > ["a", "Word"]
    
    这里有一个方法:

    const missing = data.filter((word, i) => {
      return !dbResult.some(res => res.match(query[i]))
    })
    
    // > ["a", "Word"]
    

    为什么结果不符合“单词有”的顺序?我没有想到这一点。这就像我在应用程序中获取数据一样。但这对这个问题有关系吗?我想这取决于解决方案。您可以尝试
    。(数组、[值]、[比较器])的差异
    ?为什么结果“word there is”不符合顺序?我没有想到这一点。这就像我在应用程序中获取数据一样。但这对这个问题有关系吗?我想这取决于解决方案。您可以尝试使用(数组、[值]、[比较器])进行差异处理。