Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.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/arrays/13.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_Loops_Angular10 - Fatal编程技术网

Javascript 有没有更好的方法来迭代和比较两个数组中的对象?

Javascript 有没有更好的方法来迭代和比较两个数组中的对象?,javascript,arrays,loops,angular10,Javascript,Arrays,Loops,Angular10,我对JS/Angular还不熟悉,也许我不知道什么。我有两个阵列::boardP1:BoardCellModel[]和禁止单元格:BoardCellModel[]。我想知道,在第一个数组中是否有与第二个数组中的单元格相匹配的单元格。在C#中,有LINQ用于此。JS中有类似的东西吗?目前,我的代码如下所示: private compareBoardWithForbiddenCells( forbiddenCells: Array<BoardCellModel> ): boo

我对JS/Angular还不熟悉,也许我不知道什么。我有两个阵列::
boardP1:BoardCellModel[]
禁止单元格:BoardCellModel[]
。我想知道,在第一个数组中是否有与第二个数组中的单元格相匹配的单元格。在C#中,有
LINQ
用于此。JS中有类似的东西吗?目前,我的代码如下所示:

private compareBoardWithForbiddenCells(
    forbiddenCells: Array<BoardCellModel>
  ): boolean {
    for (let i = 0; i < 10; i++) {
      for (let j = 0; j < 10; j++) {
        for (let f = 0; f < forbiddenCells.length; f++) {
          if (
            this.boardP1[i][j].col == forbiddenCells[f].col &&
            this.boardP1[i][j].row == forbiddenCells[f].row &&
            this.boardP1[i][j].value == 1
          ) {
            return false;
          }
        }
      }
    }

    return true;
  }
private compareboard与禁用单元格(
禁止单元格:数组
):布尔值{
for(设i=0;i<10;i++){
for(设j=0;j<10;j++){
for(设f=0;f

有没有更好的方法来编写此代码?

为了实现您的目标,您可以尝试以下代码,现在我有两个数组,名称和lastNames,我将用标识符(id)来匹配它们

let names=[{id:1,name'John'},{id:2,name'Jane'},{id:3,name'Oliver'},{id:4,name'Barry'}];
让lastNames=[{id:1,lastName:'Doe'},{id:2,lastName:'Abc'},{id:3,lastName:'Queen'},{id:4,lastName:'Allen'}]
names.forEach(item=>item.lastName=lastNames.find(lname=>item.id==lname.id).lastName);
console.log(名称);
检查工作

您可以为所有禁止的坐标设置
并提前检查值

const
禁止=新设置,
键=(…a)=>a.join(“|”);
for(const{col,row}of forbiddenCells)forbidden.add(key(col,row));
for(设i=0;i<10;i++){
for(设j=0;j<10;j++){
如果(this.boardP1[i][j].value!==1)继续;
if(probled.has(key(this.boardP1[i][j].col,this.boardP1[i][j].row))返回false;
}
}
返回true;

我不确定我是否完全理解,您是否试图从两个二维数组中找到匹配的x,y?另外,您将如何使用
LINQ
来实现这一点?javascript中有一些数组函数,如
map
reduce
sort
,它们是等效的。但是
名称上没有
lastName
属性。