【发布时间】:2020-01-26 18:13:59
【问题描述】:
让我的数组操作的最后一部分工作让我发疯。 基本上我有:
var array1 = [
["2", "1007"],
["5", "1042"],
["3", "1076"],
]
我想要这个……
var array2 = [
["2", "1007", "1008"],
["5", "1042", "1043", "1044", "1045", "1046"],
["3", "1076", "1077", "1078"],
]
换句话说,我想使用每个子组的第一个元素作为计数器来驱动对第二个元素的连续添加。这是我坚持的后半部分,看不出为什么我的代码不起作用。小提琴将操作分解为简单的部分。这将用于大约 12,000 行,所以我想我目前使用多个“forEach”循环的方法并不是最快的。任何关于更好性能的想法(尽管仍然可读),都将受到欢迎。
var array1 = [
["2", "1007"],
["5", "1042"],
["3", "1076"],
]
array2 = []
console.table(array1)
//--------
array1.forEach(e => {
for (var counter = 0; counter < e[0]; counter++) {
array2.push(e);
}
});
console.table(array2);
//--------
var myCol2 = 1007
var mycounter = 0
array2.forEach(e => {
if (e[1] == myCol2) {
mycounter = mycounter + 1
var myinteger = parseInt(e[1]) + mycounter // convert ref. to number
myinteger = myinteger.toString(); // convert ref. back to string
e[1] = myinteger
myCol2 = e[1]
}
else
{
myCol2 = e[1]
mycounter = 0
}
});
console.table(array2);
【问题讨论】:
-
array1.map(([n, s]) => [n, ...Array(+n).fill().map((_, i) => `${+s + i}`)]);但请注意,这不会满足您的“最快”要求,这只是一种有趣的方式:)
标签: javascript jquery performance multidimensional-array