Изменение имен ключей 2D-массива на соответствующий ключ другого объекта, содержащий векторные координаты

#javascript

#JavaScript

Вопрос:

Цель: Инициализировать пустую шахматную доску с каждой ячейкой таблицы, содержащей координаты (x, y), а затем заполнить начальные шахматные фигуры, обновив соответствующие ячейки шахматной доски, переименовав ключ соответствующей шахматной фигурой. Координаты (значения ключей) останутся прежними.

Проблема: возникли проблемы с изменением имен ключей пустой шахматной доски на соответствующие шахматные фигуры с помощью функции map.

   1) **typeError** from pushing Vector object to an array
  2) **undefined** returned from nested map function
  

После исследования способ изменения ключей будет использовать либо

Object.keys(MyObject).map(ключ => ({[ключ]: MyObject[ключ]}));

или

Object.entries(MyObject).map(([p, v]) => ({[p]: v}))

Однако я не смог заставить его работать, когда функция map была вложена для 2D-массива.

     const BOARD = `
    wbwbwbwb
    bwbwbwbw
    wbwbwbwb
    bwbwbwbw
    wbwbwbwb
    bwbwbwbw
    wbwbwbwb
    bwbwbwbw
    `;

    const PIECES = `
    rkbqibkr
    pppppppp
    --------
    --------
    --------
    --------
    pppppppp
    rkbqibkr
    `;        

    //class Board    
    static initalize(board, pieces){
    let boardCoords = board.coordinates;
    let pieceCoords = pieces.trim().split("n").map(l => [...l]);
    let initialPieces = [];
    let startBoard;

    //this is to add the appropriate coordinates of where each chess piece 
    //is at
    //the parameter 'board' that was passed is an instance of the Board 
    //class, where each cell had the appropriate (x, y) coordinates. The 
    //code was exactly the same as below, and it worked. Not sure why it's 
    //not working for below. OUTPUTS: typeError
    this.initialPieces = pieceCoords.map((row, y) => {
        return row.map((ch, x) => {
            if(ch !== '-'){
                this.initialPieces.push(new Vec(x, y)); 
            }
        });
    });

    this.startBoard = Object.entries(boardCoords).map(row, y => {
        key.map(ch, x => {
            if(ch !== "-"){
                ({ [ch]: boardCoords[y][x]});
            }
        });
   });

    return startBoard;
   }}
  

[Попытка вставить вектор в массив]

Ошибка неперехваченного типа: не удается прочитать свойство ‘push’ неопределенного

[Попытка сопоставления с помощью .map(item, item2)]

Ошибка неперехваченной ссылки: строка не определена

[Попытка сопоставления с помощью .map(item)]

Ошибка неперехваченного типа: не удается прочитать свойство ‘0’ неопределенного

[Ожидаемый результат]

[0]: [«p»]: vec (x, y), …

Комментарии:

1. Вы поняли initialPieces , что было объявлено дважды? один оператор using let и другая настройка лексического контекста?

2. Я думаю, вам следует изменить это this.initialPieces.push(new Vec(x, y)); на это initialPieces.push(new Vec(x, y));

3. Я попытался вынуть это. но он по-прежнему выдает ту же ошибку.