Объединить двумерный массив - PullRequest
0 голосов
/ 11 мая 2018

Я новичок, и мне нужна помощь, чтобы найти правильное решение для моей функции в Java

function concatenateMatrix(matrix) {}
var stringMatrix = [
    ['H', 'e', 'l', 'l', 'o'],
    [' ', 'J', 'a', 'v', 'a'],
    ['W', 'o', 'r', 'l', 'd', '!']
];
var matrix = '';
newArray = [];
for (var i = 0; i < stringMatrix.length; i++) {
    for (var j = 0; j < stringMatrix[i].length; j++);
    newArray.push(stringMatrix);
    stringMatrix = '';
}
console.log(concatenateMatrix(stringMatrix))

Это должен быть Hello, Java World! отображается.

Что я не прав? Большое спасибо

Я решил, большое спасибо

for(var x in stringMatrix) {
if(stringMatrix[x] instanceof Array) {
    stringMatrix[x] = stringMatrix[x].join("");
}

} var concatenateMatrix = stringMatrix.join ("");

return concatenateMatrix;

Ответы [ 6 ]

0 голосов
/ 11 мая 2018

Вы можете объединить массивы и затем присоединиться к окончательному массиву с помощью функции Join массивов.

var str=[]; 
for(var i=0;i<stringMatrix.length;i++){ 
  str = str.concat(stringMatrix[i]);
}
console.log(str.join(" "));
0 голосов
/ 11 мая 2018

, поскольку все указали на более простые способы сделать это, но у вас есть очень серьезные недостатки в написании кода, вот простое исправление вашего кода:

function concatenateMatrix(matrix) {
    var stringMatrix = [
        ['H','e','l','l','o'],
        [' ','J','a','v','a'],
        ['W','o','r','l','d','!']
    ];
    var matrix = '';
    newArray = [];
    for(var i=0; i<stringMatrix.length; i++){
        for(var j=0; j<stringMatrix[i].length; j++){
            newArray.push(stringMatrix[i][j]);
        }
    }
    return newArray;
}
console.log(concatenateMatrix(stringMatrix));

вы слишком рано закрыли свои фигурные скобки, код с отступом, чтобы вы могли видеть эти проблемы, вы пропустили возвращаемое значение, вы добавляли stringMatrix вместо stringMatrix[i][j], и вы очищали свой stringMatrix каждый раз в цикле i (может, вместо этого вы хотели очистить stringMatrix[i])

0 голосов
/ 11 мая 2018

Buddy, Я думаю, что вы новичок в javaScript, вы можете достичь своей цели, используя только один массив, не нужно использовать два цикла и два массива. Я проверил ваш код, напишите немного кода, чтобы вы попытались

 var stringMatrix = ['H','e','l','l','o',' ','J','a','v','a','W','o','r','l','d','!'];
        for(var i=0; i<stringMatrix.length; i++){    
            document.write(stringMatrix[i]);
        }
0 голосов
/ 11 мая 2018

Вы также можете использовать reduce(), concat() и join() метод массива.

DEMO

var arr= [
['H','e','l','l','o'],
[' ','J','a','v','a'],
['W','o','r','l','d','!']
];

console.log(arr.reduce((r,v)=>r.concat(v),[]).join(''));
.as-console-wrapper { max-height: 100% !important; top: 0; }

Использование map()

var arr= [
['H','e','l','l','o'],
[' ','J','a','v','a'],
['W','o','r','l','d','!']
];

console.log(arr.map(v=>v.join('')).join(''));
.as-console-wrapper { max-height: 100% !important; top: 0; }
0 голосов
/ 11 мая 2018
function matrixMapper(matrix){
  var str = ''
  matrix.map(function(arr){
    str += arr.join('') + ' '
  })
console.log(str)
}

В основном перебираем массивы в матрице, объединяем подмассивы и добавляем их в строку

0 голосов
/ 11 мая 2018

Вы можете сначала сгладить / объединить элементы массива, а затем join, а затем с помощью "", чтобы показать полное слово, например

[].concat.apply([], stringMatrix).join("")

var stringMatrix = [
['H','e','l','l','o'],
[' ','J','a','v','a'],
['W','o','r','l','d','!']
];

console.log([].concat.apply([], stringMatrix).join(""))
...