Как я могу удалить остальные запятые, когда отображается вывод? - PullRequest
1 голос
/ 21 февраля 2020

Я обнаружил, что при использовании массива с дочерними элементами или в виде двумерного массива функция .join удаляет запятые только при отображении из верхних элементов массива.

Как удалить все запятые при отображении массива?

Я использовал "\n", который отлично работал для того, что я хочу, но для остальных я не хочу запятых, поэтому я хочу заменить их на "".

function gameloop(){

    var mainArray = [];
    var mapSizeX = 10;
    var mapSizeY = 10;
  

    function nl(){topbody.innerText += "\n";}
    function fill2DimensionsmainArrayay(mainArray, mapSizeX, mapSizeY){
        for (var i = 0; i < mapSizeX; i++) {
            mainArray.push([0])
            
            for (var j = 0; j < mapSizeY; j++) {
                mainArray[i][j] = 0;
            }
        }
    }

   


    fill2DimensionsmainArrayay(mainArray, mapSizeX, mapSizeY);
 
    topbody.innerText += mainArray.join("\n");



}

gameloop();
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello</title>
</head>
<body>
<section id="topbody"></section>
<script src="main.js"></script>
</body>
</html>

1 Ответ

2 голосов
/ 21 февраля 2020

Причина, по которой у вас запятые между нулями, заключается в том, что у вас есть двумерный массив, а внутренние массивы сериализуются (вызывается их метод toString()). Когда массивы сериализуются, их элементы разделяются запятыми. Ниже приведен пример, демонстрирующий это:

console.log([1, 2, 3].toString())

// calls toString() behind the scenes
document.body.innerHTML = "serialised value: " + [1, 2, 3] 

Чтобы удалить запятые, сопоставьте массив и соедините элементы каждого внутреннего массива пустой строкой. Затем объедините результат этой карты с символами новой строки. Вот так:

const mainArray = [[1,2,3], [4,5,6]]
const text = mainArray
  .map(arr => arr.join(""))
  .join("\n")
document.body.innerText = text

Полный пример:

function gameloop(){
    var mainArray = [];
    var mapSizeX = 10;
    var mapSizeY = 10;
  
    function nl(){topbody.innerText += "\n";}
    function fill2DimensionsmainArrayay(mainArray, mapSizeX, mapSizeY){
        for (var i = 0; i < mapSizeX; i++) {
            mainArray.push([0])
        
            for (var j = 0; j < mapSizeY; j++) {
                mainArray[i][j] = 0;
            }
        }
    }

    fill2DimensionsmainArrayay(mainArray, mapSizeX, mapSizeY);

    topbody.innerText += mainArray.map(arr => arr.join("")).join("\n");
}

gameloop();
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello</title>
</head>
<body>
<section id="topbody"></section>
<script src="main.js"></script>
</body>
</html>
...