tic-tac-toe

by Vladymyr Shevchuk

JavaScript

const storeOld = [
  [new Map([[0, 0]]), new Map([[1, 1]]), new Map([[2, 2]])],
  [new Map([[3, 3]]), new Map([[4, 4]]), new Map([[5, 6]])],
  [new Map([[6, 6]]), new Map([[7, 7]]), new Map([[8, 8]])]
];

const store = [
  [{0: 0}, {1: 1}, {2: 2}],
  [{3: 3}, {4: 4}, {5: 5}],
  [{6: 6}, {7: 7}, {8: 8}],
  
  [{0: 0}, {3: 3}, {6: 6}],
  [{1: 1}, {4: 4}, {7: 7}],
  [{2: 2}, {5: 5}, {8: 8}],
  
  [{0: 0}, {4: 4}, {8: 8}],
  [{2: 3}, {4: 4}, {6: 6}]
];

function changeStore (store, value, char) {
	return store.map(arr => {
  	return arr.map(item => {
			if (item[value] === value) item[value] = char;
      return item;
    })
  })
}


console.log('store', store);

const step1 = changeStore(store, 3, 'X');
const step2 = changeStore(store, 4, 'X');
//const step3 = changeStore(store, 5, 'X');

//console.log('step3', step3);

function checkWin (store, char) {
	const result = [];
  
  store.forEach(arr => {
  	const foo = arr.every(item => {
    	const [value] =  Object.values(item);
    	return value === char;
    });

		console.log('foo', foo);

    if (foo) {
    	result.push.apply(result, arr.map(item => Object.keys(item)));
    };
  });
  
  
  return [].concat(...result) ;
}

const result = checkWin(step2, 'X');

console.log(result);