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