【问题标题】:Slice/Section of two dimensional array in JavaScriptJavaScript中二维数组的切片/部分
【发布时间】:2018-12-25 06:04:26
【问题描述】:

我需要使用二进制代码获取二维数组的切片。我需要指定我想从哪里开始以及在哪里结束。

现在我有这个代码,但我很确定它是错误的:

var slice = [[]];
var endx = 30;
var startx = 20;
var starty = 10;
var end = 20;
for (var i = sx, a = 0; i < json_data.length, a < ex; i++, a++) {
  for (var j = sy, b = 0; j < json_data[1].length, b < ey; j++, b++)
    slice[a][b] == json_data[i][j];
}

json_data 是一个数组,格式为:

[0,0,0,0,0,1,...],[1,1,0,1,1,0...],...

它是 600x600

【问题讨论】:

    标签: javascript arrays node.js


    【解决方案1】:

    您可以使用slice()map() 有效地做到这一点。

    array.slice(s, e) 将从s 开始并在e 之前结束的数组的一部分。因此,您可以先对数组进行切片,然后在切片上映射并切片每个子数组。例如,要从行索引 1 到 2(包括)和列索引 2 到 3 获取部分,您可以:

    let array = [
      [1, 2, 3, 4],
      [5, 6, 7, 8],
      [9, 10, 11, 12],
      [13, 14, 15, 16]
    ]
    let sx = 1
    let ex = 2
    let sy = 2
    let ey = 3
    
    let section = array.slice(sx, ex + 1).map(i => i.slice(sy, ey + 1))
    console.log(section)

    【讨论】:

    • 上面的代码会在应该与 Javascript 兼容的 Google Apps Script 中抛出一个错误......这是为什么呢?违规行let section = array.slice(sx, ex + 1).map(i =&gt; i.slice(sy, ey + 1)),特别是看起来问题出在.map函数......也许i=&gt; i.slice
    • @Riccardo 在 V8 中对我来说很好用。我在做let sheetArr = sheet.getDataRange().getValues(); 然后let section = sheetArr.slice(start_row, end_row + 1).map(i =&gt; i.slice(start_col, end_col + 1));
    • 是的,V8 兼容 ECMA 脚本
    猜你喜欢
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 2011-09-19
    • 1970-01-01
    相关资源
    最近更新 更多