连接二维数组

问题描述 投票:0回答:6

我是新人,我需要帮助才能在 javascript 中找到适合我的函数的正确解决方案:

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;
javascript matrix multidimensional-array concatenation string-concatenation
6个回答
0
投票

您可以首先展平/合并数组元素,然后

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(""))


0
投票
function matrixMapper(matrix){
  var str = ''
  matrix.map(function(arr){
    str += arr.join('') + ' '
  })
console.log(str)
}

基本上迭代矩阵中的数组,连接子数组并将它们添加到字符串中


0
投票

既然每个人都指出了更简单的方法,但你在代码编写中存在非常令人担忧的缺陷,这里有一个对你的代码的简单更正:

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
投票

您可以连接数组,然后使用数组的 Join 函数连接最终的数组。

var str=[]; 
for(var i=0;i<stringMatrix.length;i++){ 
  str = str.concat(stringMatrix[i]);
}
console.log(str.join(" "));

0
投票

您还可以使用

reduce()
concat()
join()
数组方法。

演示

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
投票

朋友, 我认为您是 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]);
        }
© www.soinside.com 2019 - 2024. All rights reserved.