Skip to content Skip to sidebar Skip to footer

Creating 2d Array From Section Of Other 2d Array Javascript

I am trying to cut a section of a 2d array specified by x, y and w, h. an example of an array I'm trying to cut would be var arr = [ ['0', '1', 'd', 'a', '1', '1'],

Solution 1:

Using .slice allows you to pull out bits of arrays. First pull out the rows at Y -> Y + H. Next, using map() to go through each of those to slice each into the columns from X -> X + W.

You'll need to add safe guards to avoid exceeding the size or shape of the arrays.

var arr = [
  ['0', '1', 'd', 'a', '1', '1'],
  ['0', 's', '0', 'f', 's', 'g'],
  ['b', 'x', 'e', '0', 'v', 'a'],
  ['a', 'e', 'n', '0', 'z', 'm'],
  ['b', 'x', 'e', '0', 'v', 'a'],
];

console.log(snapshot(2, 1, 4, 2));

function snapshot(x, y, w, h) {
  return arr.slice(y, y + h).map(a => a.slice(x, x + w))
}

Solution 2:

This task can be simplified greatly by breaking it up into two steps:

Step 1: extract the desired complete rows

Step 2: extract the desired columns from the extracted rows.

const arr = [
  ['0', '1', 'd', 'a', '1', '1'],
  ['0', 's', '0', 'f', 's', 'g'],
  ['b', 'x', 'e', '0', 'v', 'a'],
  ['a', 'e', 'n', '0', 'z', 'm'],
  ['b', 'x', 'e', '0', 'v', 'a'],
];

function snapshot (array, colStart, rowStart, cols, rows) {
  
  // slice out the rows
  const fullRows = array.slice(rowStart, rowStart+rows);
  console.log('fullRows:', fullRows);
  
  // cut down the rows
  const cutRows = fullRows.map(row => row.slice(colStart, colStart+cols));
  return cutRows;
}

const result = snapshot(arr, 2, 1, 4, 2);
console.log('result:', result);

Solution 3:

First filter out unwanted rows and use map and slice

const snapshot = (arr, x, y, w, h) =>
  arr
    .filter((_, i) => i >= y && i < y + h)
    .map((items) => items.slice(x, x + w));

var arr = [
  ["0", "1", "d", "a", "1", "1"],
  ["0", "s", "0", "f", "s", "g"],
  ["b", "x", "e", "0", "v", "a"],
  ["a", "e", "n", "0", "z", "m"],
  ["b", "x", "e", "0", "v", "a"],
];

console.log(snapshot(arr, 2, 1, 4, 2));

Post a Comment for "Creating 2d Array From Section Of Other 2d Array Javascript"