0

我有一个由使用以下函数制作的对象组成的多维数组。

   function createEmptyArray() {
        const col = 10;
        const row = 9;
        let cellData = [];
        for (let i = 0; i < row; i++) {
            cellData.push([]);
            for (let j = 1; j <= col; j++) {
                cellData[i][j] ={
                    x:i,
                    y:j,
                    revealed :true,
                    flag :false,
                    containsMine :false,
                    surroundingMines :0
                }
            }
        }
        return cellData;
    }

const newArray= createEmptyArray();

我怎样才能深度克隆这个。我知道有各种各样的方法JSON.parse(JSON.stringify(o))$.extend(true, {}, o)但这会产生很多问题。当对象具有函数时,JSON 解析方法不起作用。

4

2 回答 2

0

正如我在评论中所说,这个 SO广泛涵盖了深层克隆主题。

但是,由于数组中的对象是扁平的,这对您来说很方便:

const arrayCopy = newArray.map( (o) => Object.assign({},o) );
于 2018-06-09T03:35:49.380 回答
0

您可以使用像 underscore 或 lodash 这样的库在对象和数组上使用这样的实用函数。这些功能非常高效,可以处理极端情况(null、undefined、empty),并且可以节省您的时间,正如@Jaromanda 所说,为什么要重新发明轮子。

于 2018-06-09T06:30:21.103 回答