Javascript 使用节点js打印数组中可用的差值

Javascript 使用节点js打印数组中可用的差值,javascript,node.js,nodes,Javascript,Node.js,Nodes,我不知道这是怎么可能的,我想打印包含相同值和不同值的数组 我想检查两个数组中是否都存在该值(如果存在),然后在一个数组中打印它,该数组包含两个数组的所有相同值,另一个数组包含不同的名称 readFileArray: [ [ mainFolder/abc_doc.txt, mainFolder/pqr_doc.txt, mainFolder/subFolder/xyz_image.jpg, mainFolder/subFolder/iop_pdf.pdf,

我不知道这是怎么可能的,我想打印包含相同值和不同值的数组

我想检查两个数组中是否都存在该值(如果存在),然后在一个数组中打印它,该数组包含两个数组的所有相同值,另一个数组包含不同的名称

readFileArray:
[
  [
    mainFolder/abc_doc.txt, 
    mainFolder/pqr_doc.txt, 
    mainFolder/subFolder/xyz_image.jpg,
    mainFolder/subFolder/iop_pdf.pdf,
  ],
  [
    Fish,
    Life,
    Qwerty,
    Moon
  ]
]
代码:

现在我还需要新数组中的非相似值,名称为expectedArray

expectedArray=
[
  mainFolder/fish.txt,  
  mainFolder/life.txt, 
  mainFolder/subFolder/qwerty.jpg, 
  mainFolder/subFolder/moon.pdf, 
]

我们可以创建函数来获得两个数组的交集和差,如下所示,然后通过传递相关值来调用它们

我决定使用而不是改进性能(尽管这只会对非常大的阵列产生影响)

const readFileArray=[['mainFolder/abc_doc.txt','mainFolder/pqr_doc.txt','mainFolder/subFolder/xyz_image.jpg','mainFolder/subFolder/iop_pdf.pdf',]['Fish','Life','Qwerty','Moon']
const comparePathName=['mainFolder/abc_doc.txt'、'mainFolder/pqr_doc.txt'、'mainFolder/subFolder/xyz_image.jpg'、'mainFolder/subFolder/iop_pdf.pdf'、'mainFolder/fish.txt'、'mainFolder/subFolder/qwerty.jpg'、'mainFolder/subFolder/moon.pdf',]
/*仅返回一个数组中的所有项,使用集合避免N平方行为*/
函数getSymmetricDifference(array1,array2){
常量集合1=新集合(数组1);
const set2=新集合(array2);
const itemsinarrayonly=array1.filter(el=>!set2.has(el))
const itemsInArray2Only=array2.filter(el=>!set1.has(el))
返回ItemsInArrayOnly.concat(ItemsInArrayOnly)
}
/*返回所有常用项,使用set避免N平方行为*/
函数getIntersection(array1,array2){
const set2=新集合(array2);
返回array1.filter(el=>set2.has(el));
}
log(“交叉点:”,getIntersection(readFileArray[0],comparePathName))

log(“Difference:,getSymmetricDifference(readFileArray[0],comparePathName))
我们可以创建函数来获取两个数组的交集和差,如下所示,然后通过传递相关值来调用它们

我决定使用而不是改进性能(尽管这只会对非常大的阵列产生影响)

const readFileArray=[['mainFolder/abc_doc.txt','mainFolder/pqr_doc.txt','mainFolder/subFolder/xyz_image.jpg','mainFolder/subFolder/iop_pdf.pdf',]['Fish','Life','Qwerty','Moon']
const comparePathName=['mainFolder/abc_doc.txt'、'mainFolder/pqr_doc.txt'、'mainFolder/subFolder/xyz_image.jpg'、'mainFolder/subFolder/iop_pdf.pdf'、'mainFolder/fish.txt'、'mainFolder/subFolder/qwerty.jpg'、'mainFolder/subFolder/moon.pdf',]
/*仅返回一个数组中的所有项,使用集合避免N平方行为*/
函数getSymmetricDifference(array1,array2){
常量集合1=新集合(数组1);
const set2=新集合(array2);
const itemsinarrayonly=array1.filter(el=>!set2.has(el))
const itemsInArray2Only=array2.filter(el=>!set1.has(el))
返回ItemsInArrayOnly.concat(ItemsInArrayOnly)
}
/*返回所有常用项,使用set避免N平方行为*/
函数getIntersection(array1,array2){
const set2=新集合(array2);
返回array1.filter(el=>set2.has(el));
}
log(“交叉点:”,getIntersection(readFileArray[0],comparePathName))

log(“差异:”,getSymmetricDifference(readFileArray[0],comparePathName))
一种简单的方法是使用和方法:

为了获得公共值,过滤器将迭代第一个数组,includes将检查第二个数组中的当前值。要获得差异,请检查在第二个数组中是否未找到当前值

let availableName = readFileArray[0].filter(value => comparePathName.includes(value))

let expectedArray = comparePathName.filter(value => !readFileArray[0].includes(value))
当然,要获得所有不同的值,您需要通过切换上述代码中的数组来进行双向过滤,然后合并结果。或者简单地检查哪个数组有更多的元素,并将其用于过滤器

简单示例:

让readFileArray=[
[
'mainFolder/abc_doc.txt',
'主文件夹/pqr_doc.txt',
'mainFolder/subFolder/xyz_image.jpg',
'mainFolder/subFolder/iop_pdf.pdf',
],
[
“鱼”,
“生命”,
“Qwerty”,
“月亮”
]
]
让comparePathName=[
'mainFolder/abc_doc.txt',
'主文件夹/pqr_doc.txt',
'mainFolder/subFolder/xyz_image.jpg',
'mainFolder/subFolder/iop_pdf.pdf',
'mainFolder/fish.txt',
'mainFolder/life.txt',
'主文件夹/子文件夹/qwerty.jpg',
'mainFolder/subFolder/moon.pdf',
]
让availableName=readFileArray[0]。筛选器(值=>comparePathName.includes(值))
让expectedArray=comparePathName.filter(值=>!readFileArray[0]。包含(值))
console.log('Common',availableName)

console.log(“不同”,预期阵列)
一种简单的方法是使用和方法:

为了获得公共值,过滤器将迭代第一个数组,includes将检查第二个数组中的当前值。要获得差异,请检查在第二个数组中是否未找到当前值

let availableName = readFileArray[0].filter(value => comparePathName.includes(value))

let expectedArray = comparePathName.filter(value => !readFileArray[0].includes(value))
当然,要获得所有不同的值,您需要通过切换上述代码中的数组来进行双向过滤,然后合并结果。或者简单地检查哪个数组有更多的元素,并将其用于过滤器

简单示例:

让readFileArray=[
[
'mainFolder/abc_doc.txt',
'主文件夹/pqr_doc.txt',
'mainFolder/subFolder/xyz_image.jpg',
'mainFolder/subFolder/iop_pdf.pdf',
],
[
“鱼”,
“生活”,
“Qwerty”,
“月亮”
]
]
让comparePathName=[
'mainFolder/abc_doc.txt',
'主文件夹/pqr_doc.txt',
'mainFolder/subFolder/xyz_image.jpg',
'mainFolder/subFolder/iop_pdf.pdf',
'mainFolder/fish.txt',
'mainFolder/life.txt',
'主文件夹/子文件夹/qwerty.jpg',
'mainFolder/subFolder/moon.pdf',
]
让availableName=readFileArray[0]。筛选器(值=>comparePathName.includes(值))
让expectedArray=co
expectedArray=
[
  mainFolder/fish.txt,  
  mainFolder/life.txt, 
  mainFolder/subFolder/qwerty.jpg, 
  mainFolder/subFolder/moon.pdf, 
]
let availableName = readFileArray[0].filter(value => comparePathName.includes(value))

let expectedArray = comparePathName.filter(value => !readFileArray[0].includes(value))