मैं नीचे दिए गए बोर्ड के आधार पर स्थान कैसे निर्धारित कर सकता हूं? धन्यवाद

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)
};

यह self.board को नहीं पहचानता...

0
Rik 28 अक्टूबर 2019, 02:01

3 जवाब

सबसे बढ़िया उत्तर

मध्यवर्ती परिणाम रखने के लिए एक नए चर का प्रयोग करें:

let board = [ -1, 1, etc ];
let initialState = {
    board: board,
    locations: calcLocations( board )
};
0
Dai 27 अक्टूबर 2019, 23:05

चूंकि आपको this का उपयोग करने की आवश्यकता है, लेकिन आप किसी फ़ंक्शन का उपयोग नहीं करना चाहते हैं, आप गेटर का उपयोग कर सकते हैं। पहली कॉल पर, गेटर मान उत्पन्न करता है, और इसे this._locations पर कैश करता है। अब से गेट्टर कैश्ड वैल्यू वापस कर देगा।

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 अक्टूबर 2019, 23:07

आपको this कीवर्ड का उपयोग करना होगा, और इसके काम करने के लिए आपको {} के दायरे में रहना होगा।

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

ध्यान दें कि स्थान प्राप्त करने के लिए एक फ़ंक्शन बन जाता है: initialState.locations();

0
Ibu 27 अक्टूबर 2019, 23:06