使用生成的ID创建JavaScript集合的最具性能的方法

Most performant way to create a JavaScript collection with generated IDs

本文关键字:集合 方法 性能 JavaScript 创建 ID      更新时间:2023-09-26

我需要创建一个这样的对象:

{
  columns: ["Foo", "Bar", "Baz"],
  rows: {
    0: [0,1,2],
    1: [3,4,5],
  },
  cells: {
    0: "First Cell, First Row",
    1: "Second Cell, First Row",
    2: "Third Cell, First Row",
    3: "First Cell, Second Row",
    4: "Second Cell, Second Row",
    5: "Third Cell, Second Row"
  }
}

其中,数字对象键是行ID和单元格ID。创建对象本身并不困难,但我创建行数组的部分似乎与我正在做的事情过于复杂。

现在,我正在为每一行、每一列像一样推送cellId++

  var cellId = 0;
  data.rows.forEach(function (row, rowId) {
    newData.rows[rowId] = [];
    data.columns.forEach(function (column, columnId) {
      newData.rows[rowId].push(cellId++);
    });
  });

我喜欢的是类似(伪代码)的东西

  data.rows.forEach(function (row, rowId) {
    newData.rows[rowId] = new Array({startAt: 0, endAt: 2});
  });

有办法这样做吗?

map应该可以帮助您:

var cellId = 0;
  data.rows.forEach(function (row, rowId) {
    newData.rows[rowId] = data.columns.map(function() { return cellId++; });
  });

或者将其用于两个维度:

newData = data.rows.map(function() {
  return data.columns.map(function() { 
    return cellId++;
  });
})