繁体   English   中英

嵌套循环遍历Vue实例中的对象数组

[英]Nested loops through an array of objects in a Vue Instance

我在Vue实例中创建了一个由正方形对象组成的大型数组,如下所示:

new Vue({
el: '#application',
data:
{
    title : 'Conways Game of Life',
    squaresClassVar : 'squares',
    userColor : '#453BCC',
    startBool : true,
    squaresFromServer:[],
    squares:
    [
        { row: 0, column: 0, color:'#D3D3D3'},
        { row: 0, column: 1, color:'#D3D3D3'},
        { row: 0, column: 2, color:'#D3D3D3'},
        { row: 0, column: 3, color:'#D3D3D3'},
        { row: 0, column: 4, color:'#D3D3D3'},
        { row: 0, column: 5, color:'#D3D3D3'},
        ...
     ]

每个正方形都与我的HTML和CSS中的实际正方形画布相关联。 当我向服务器发出请求时,我正在填充squaresFromServer[]数组,该数组的填充方式与squares数组相同。 我试图遍历这两个数组以更新从服务器发送的正方形的颜色。

当前算法如下:

this.squares.forEach(indexLocalSquares => {
    this.squaresFromServer.forEach(indexServerSquares => {
        if(indexLocalSquares.row == indexServerSquares.row  && indexLocalSquares.column == indexServerSquares.column )
        {
            console.log('entered')
            indexLocalSquares.color = indexServerSquares.color 
        }
        else
        {
            indexLocalSquares.color = '#D3D3D3'
        }
    });
});

问题是indexLocalSquares.color实际上没有使用从服务器方格发送的颜色进行更新。

有谁知道我如何遍历这两个数组,以便可以使用从服务器发送的正方形更新正方形数组的颜色。

在大多数其他语言中,我只会做这样的事情:

for(int i = 0, i <= squares.length - 1, i++)
{
    for(int j = 0, j <= squaresFromServer.length - 1, j++)
    {
        if(squares[i].row == squaresFromServer[j].row && squares[i].column == squaresFromServer[j].column)
        {
            squares[i].color == squaresFromServer[j].color
        }
    }
}

您将在循环的不同迭代中覆盖颜色。 首先将所有颜色设置为默认颜色,然后仅更新服务器响应中存在的那些颜色

this.squares.forEach(indexLocalSquares => {
            indexLocalSquares.color = '#D3D3D3'
});

this.squares.forEach(indexLocalSquares => {
    this.squaresFromServer.forEach(indexServerSquares => {
        if(indexLocalSquares.row == indexServerSquares.row  && indexLocalSquares.column == indexServerSquares.column )
        {
            indexLocalSquares.color = indexServerSquares.color 
            console.log(indexLocalSquares);
        }
    });
});

请注意,嵌套迭代的复杂度为O(rows * cols)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM