我有一个这样的数组:
arrayA = [1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2];
我需要在这样的组中分隔数字:
arrayB = [1234,5678,9123,4567,8912];
正如您所看到的那样arrayA
,但是现在是新数字的4个值组。
我能够使用这样的bug:arrayB=[undefined1234,undefined5678];
使用此代码:
for (var i = 0; i < 20; i++) {
if (i/4== n+1){
arrayB[n] = temp;
n++;
}
temp += arrayA[i];
}
就是这样。我理解这个错误,是因为+=
,但我不确定如何以其他方式执行此操作。
答案 0 :(得分:1)
此代码将执行该操作
var arrayA = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2,3,4];
var arrayB = [];
for (var x = 0; x < arrayA.length; x += 4) {
arrayB.push(arrayA.slice(x, x + 4).join(''));
}
console.log(arrayB);
<强>更新强>
米莉提出了一个公平的观点。如果您需要结果数组中的数字,请在for
循环
arrayB.push(parseInt(arrayA.slice(x, x + 4).join('')));
答案 1 :(得分:0)
尝试在循环开始之前和每次分配到temp
之后将arrayB
设置为“”(当您进行分配时,将step
中的字符串转换为整数)。在arrayB
循环结束后,您可能需要对for
进行最终分配。
答案 2 :(得分:0)
我会这样做:
arrayA = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2];
temp = arrayA.join('');
count = 4;
grouped = [];
max = temp.length / count;
for (i = 0; i < max; i++) {
grouped.push(parseInt(temp.substr(i * 4, 4)));
}
console.log(grouped);
少数字符串转换和返回数字。 :) 演示:http://jsfiddle.net/hue0a1wb/