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