javascript - 通过检查具有相同元素的数组,将 2d 数组与另一个 2d 数组进行比较
问题描述
有一个二维数组 (Arr1) 并且无法与另一个二维数组 (Arr2) 进行检查/比较以计算与精确元素匹配的数组。 例如:
const arr1: string[][] = [
["R", "P"],
["R", "S"],
["S", "P"],
];
const checkAgainst: string[][] = [
["R", "S"],
["P", "R"],
["S", "P"],
];
function check(arr1: string[][]) {
arr1.map((a, index, arr) => {
let result = arr[0].filter((o1) =>
checkAgainst.some((o2) => o1.id === o2.id)
);
});
}
console.log(check(arr1));
返回应该是true, false, true
或者只是1, 0, 1
,所以最终可以计算 的数量true or 1
,预期的结果:true===2
有什么好方法可以在不使用 for 循环的情况下做到这一点?
解决方案
function haveSameValues(arr1: string[], arr2: string[]): boolean {
if (arr1.length === 0 || arr1.length != arr2.length) {
return false;
}
for (let i = 0; i < arr1.length; i++) {
if (arr1[i] != arr2[i]) {
return false;
}
}
return true;
}
function countMatches(matrix1: string[][], matrix2: string[][]): number {
let count = 0;
for (const arr1 of matrix1) {
for (const arr2 of matrix2) {
if (haveSameValues(arr1, arr2) {
count++;
}
}
}
return count;
}
const arr1: string[][] = [
["R", "P"],
["R", "S"],
["S", "P"],
];
const checkAgainst: string[][] = [
["R", "S"],
["P", "R"],
["S", "P"],
];
console.log(countMatches(arr1, checkAgainst));
推荐阅读
- uml - 如何为我没有编码的大型项目创建 UML 图?
- python - 如何使用 pyside2 在 Qtableview 中显示(和格式化)日期时间数据
- javascript - 如何从请求中返回此函数中的 var?
- azure-devops - 如何从 Power bi 中的 Azure DevOps 查询工作项的状态更改
- angular - CORS 策略已阻止对 XMLHttpRequest 的访问。请求的资源上不存在“Access-Control-Allow-Origin”标头
- apache-nifi - 如何配置 PutFile 使其按 24 小时计划运行,但运行时间与传入流文件的数量一样多
- svelte - 使用附加的 svelte 组件并在相同的 Javascript 上下文中创建窗口
- sql - 使用 LIKE 运算符或更好的方法连接 2 个表的最佳实践
- python - Flask 自定义装饰器
- ios - 在获取数据 Firebase / Swift 之前加载的 TableView