使用生成的ID创建JavaScript集合的最具性能的方法
Most performant way to create a JavaScript collection with generated IDs
我需要创建一个这样的对象:
{
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++;
});
})
相关文章:
- 我们可以用参数对象集合而不是原始数据来调用JavaScript collection.reduce()方法吗
- 在主干中呈现集合的最佳方法
- Undercore:使用集合方法包裹数组
- 正在使用AngularJS获取集合中的选定元素.声明性方法
- 显示行动通过铁:路由器,模板是't从集合传递数据.findOne方法
- 找到将 N 个对象分布到 M 集合中的所有方法的算法
- 使用页面加载数据引导主干集合的正确方法
- 在使用 meteor 集合时从开发控制台收到“找不到方法 [404]”错误
- 当您有集合时,调用接收单个对象作为参数的函数的最佳方法是什么
- 根据某些集合创建随机颜色的方法
- 如何从骨干中的集合调用模型的方法.js
- Backbone.Fetch 方法应该在集合中还是视图中
- 基于集合侦听器运行方法的主干
- 结果:TypeError:Object[Object Object]没有方法'集合'尝试编辑分析对象时
- 将Parameters添加到Backbone.js集合导致ArgumentError(筛选器方法的参数数目错误.)
- 有没有一种方法可以通过一些任意的排序标准从猫鼬集合中获得第n个文档
- 在Meteor方法中承诺之后插入集合
- 检查数字是否在集合中的最快速方法
- Javascript集合方法
- Backbone.js集合方法绑定