Сдвиг значений в массиве, splice

262
12 июня 2017, 23:37

Доброго времени суток, код будущего морского боя.

 var sea =     [[0,0,0,0,0],
                [0,0,0,0,0],
                [0,0,0,0,0],
                [0,0,0,0,0],
                [0,0,0,0,0]];
    // Оригинальный массив, хранящий положение кораблей. 
    var uniqSea = ['0,0','0,1','0,2','0,3','0,4',
                   '1,0','1,1','1,2','1,3','1,4',
                   '2,0','2,1','2,2','2,3','2,4',
                   '3,0','3,1','3,2','3,3','3,4',
                   '4,0','4,1','4,2','4,3','4,4'];
    // Массив уникальных координат, из которого я получаю координаты. 
    function setShip(shipSize) {
        var cord = getRandomSpot().split(','); // Получаю случайную координату из массива uniqSea. 
        var x = parseInt(cord[0]); // Беру значения x и y из неё. 
        var y = parseInt(cord[1]);
        var uniqFromSea = Math.round(parseInt(cord.join('')) + y)/2; // Определяю, чему равен индекс этой случайной координаты в массиве uniqSea 
        sea[x][y] = shipSize; // Ставлю корабль в массив sea.
        console.log('[X]: ' + x + ' [Y]: ' + y);
        console.log('COORD FROM uniqSea: ' + uniqFromSea);
        uniqSea.splice(uniqFromSea, 1); // Удаляю уникальную координату, чтобы не зарандомить её снова. 
    }
    function getRandomSpot() {
        return uniqSea[Math.floor((Math.random() * uniqSea.length))];
    }
    setShip(1);
    setShip(1);
    setShip(1);
    console.log(sea);
    console.log(uniqSea);

В комментариях написал, что происходит в коде. Помогите со следующей проблемой: Когда я удаляю уникальную координату в 23 строке, то splice, удаляет только значение, получается, что сдвигаются значения, но индексы остаются прежними. В результате, когда я захочу удалить другую уникальную координату, то удалю не её, а следующую в массиве. Например :

[X]: 0 [Y]: 2 // Зарандомило 0,2 и удалило 0,2
COORD FROM uniqSea: 2
[X]: 2 [Y]: 1
COORD FROM uniqSea: 11 //Зарандомило 2,1 и удалило 2,2, полный бред..
[ [ 0, 0, 1, 0, 0 ],
  [ 0, 0, 0, 0, 0 ],
  [ 0, 1, 0, 0, 0 ],
  [ 0, 0, 0, 0, 0 ],
  [ 0, 0, 0, 0, 0 ] ]
[ '0,0', '0,1',        '0,3','0,4',
  '1,0', '1,1','1,2', '1,3','1,4',
  '2,0', '2,1',        '2,3','2,4',
  '3,0', '3,1','3,2', '3,3','3,4',
  '4,0', '4,1','4,2', '4,3','4,4' ]
READ ALSO
Laravel/PHP или Express/Node.JS, что выбрать? [требует правки]

Laravel/PHP или Express/Node.JS, что выбрать? [требует правки]

Не могу выбрать на чем делать бекенд проектаСама суть проекта это CMS Магазинов (допустим)

386
Яндекс календарь

Яндекс календарь

Доброго времени сутокКто-нибудь работать с яндекс календарём? Есть необходимость сделать онлайн запись на приём и прикрутить её к календарю

494
Чем грозит синглтон для БД?

Чем грозит синглтон для БД?

Избавляясь от глобальных переменных, решил ссылаться на PDO объект через промежуточный статический метод

203