Bagaimana saya bisa mengatur lokasi berdasarkan papan di bawah ini? Terima kasih

let initialState = {
  board: [
    [-1, 1, -1, 1, -1, 1, -1, 1],
    [1, -1, 1, -1, 1, -1, 1, -1],
    [-1, 1, -1, 1, -1, 1, -1, 1],
    [0, -1, 0, -1, 0, -1, 0, -1],
    [-1, 0, -1, 0, -1, 0, -1, 0],
    [2, -1, 2, -1, 2, -1, 2, -1],
    [-1, 2, -1, 2, -1, 2, -1, 2],
    [2, -1, 2, -1, 2, -1, 2, -1]
  ],
  locations: calcLocations(self.board)
};

Itu tidak mengenali self.board...

0
Rik 28 Oktober 2019, 02:01

3 jawaban

Jawaban Terbaik

Gunakan variabel baru untuk menyimpan hasil antara:

let board = [ -1, 1, etc ];
let initialState = {
    board: board,
    locations: calcLocations( board )
};
0
Dai 27 Oktober 2019, 23:05

Karena Anda perlu menggunakan this, tetapi tidak ingin menggunakan fungsi, Anda dapat menggunakan pengambil. Pada panggilan pertama, pengambil menghasilkan nilai, dan menyimpannya dalam cache di this._locations. Mulai sekarang pengambil akan mengembalikan nilai yang di-cache.

const calcLocations = JSON.stringify;

const initialState = {
  board: [
    [-1, 1, -1, 1, -1, 1, -1, 1],
    [1, -1, 1, -1, 1, -1, 1, -1],
    [-1, 1, -1, 1, -1, 1, -1, 1],
    [0, -1, 0, -1, 0, -1, 0, -1],
    [-1, 0, -1, 0, -1, 0, -1, 0],
    [2, -1, 2, -1, 2, -1, 2, -1],
    [-1, 2, -1, 2, -1, 2, -1, 2],
    [2, -1, 2, -1, 2, -1, 2, -1]
  ],
  get locations() {
    if(!this._locations) this._locations = calcLocations(this.board);
    
    return this._locations; 
  }
};

console.log(initialState.locations);
0
Ori Drori 27 Oktober 2019, 23:07

Anda harus menggunakan kata kunci this, dan Anda harus berada di dalam lingkup {} agar bisa berfungsi.

let initialState = {
  board: [
    ...
  ],
  locations: function() {
    return calcLocations(this.board);
  }
};

Perhatikan bahwa untuk mendapatkan lokasi menjadi fungsi: initialState.locations();

0
Ibu 27 Oktober 2019, 23:06