【问题标题】:Javascript: Add cols / rows to 2d matrixJavascript:将列/行添加到二维矩阵
【发布时间】:2018-05-06 12:01:01
【问题描述】:

我有一个这样的数组(二维矩阵):

var matrix = [
      '0000',   
      '1100',     
      '1100'  
    ] 

...而且我想在特定位置添加行和列。 请参阅下面的示例 - 在索引 (x) 0 处添加 col在索引 (y) 0 处添加行

var matrix = [                    var result = [
  '0000',                          '00000',
  '1100',         add col -->      '01100',
  '1100'                           '01100'
]                                 ]

和...

var matrix = [                    var result = [
   '0000',                          '0000',
   '1100',                          '0000',
   '1100'         add row -->       '1100',
                                    '1100'
]                                 ]

有没有更好/优雅的方法来获得这个结果,而不是使用愚蠢的 for 循环? (下面的示例)

var matrix = [
    '0000',
    '1100',
    '1100',
]


function add_col(matrix, x) {
    for (var i=0; i<matrix.length; i++) {
        matrix[i] = matrix[i].slice(0, x) + "0" + matrix[i].slice(x);
    }
    return matrix.join('\n')
}
console.log(add_col(matrix, 0))

【问题讨论】:

  • IMO 愚蠢的for 循环将是选项中性能最高的。所以优雅的方法是将它包装在一个函数中。
  • 你可以使用Array#mapArray#forEach
  • 我投票决定将此问题作为题外话结束,因为关于改进编程风格的问题对于 CodeReview.stackexchange.com 来说更为热门。
  • 使用 map 可能看起来更优雅,但并不快:matrix.map(row =&gt; row.slice(0, x) + "0" + row.slice(x)); - 如果您想经常更新矩阵,我会使用数字数组而不是字符串。

标签: javascript arrays string matrix col


【解决方案1】:

可以使用地图功能

var matrix = [
    '0000',
    '1100',
    '1100',
]

result=matrix.map(function(x) { return "0"+x});

【讨论】:

  • 这里“0”作为第一行添加到结果中
猜你喜欢
  • 2018-06-25
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-21
  • 1970-01-01
  • 2021-06-17
  • 1970-01-01
相关资源
最近更新 更多