预期结果如下。试图将旧数组拆分为3个数组。我不想“大块”它,而是希望将这些项目放入几乎“列”
var old_array = ["1","2","3","4","5"];
var new_array = new Array();
for(i=0; i<old_array.length; i++)
{
new_array[i%3].push(old_array[i]);
}
结果应为:
new_array[0] = [3]
new_array[1] = [1, 4]
new_array[2] = [2, 5]
答案 0 :(得分:0)
从1开始,并将值引用为old_array [i - 1]
var old_array = ["1","2","3","4","5"];
var new_array = new Array();
for(i = 1; i < old_array.length + 1; i++)
{
new_array[i%3] = new_array[i%3] || [];
new_array[i%3].push(old_array[i - 1]);
}
答案 1 :(得分:0)
您无法致电new_array[i%3].push
,因为new_array[i%3]
不存在。您需要初始化这些子数组,然后才能将值首次推入它们。
要获得所需的结果,您还需要将索引“移位”一个:
var old_array = ["1","2","3","4","5"];
var new_array = [];
for(i=0, mod_i=0; i<old_array.length; i++)
{
mod_i = (i+1)%3;
if(!new_array[mod_i]) {
new_array[mod_i] = [];
}
new_array[mod_i].push(old_array[i]);
}
console.log(new_array);
答案 2 :(得分:0)
var old_array = ["1","2","3","4","5"],
new_array = [],
num_of_columns = 3; // adjustable
for(var i=0, n=old_array.length; i<n; i++)
{
// 1: turn string into an Int
var val = parseInt(old_array[i]);
// 2: determine column placement
// change 'val' to 'i' if wanting it by index of old_array (not by value)
var col_num = val % num_of_columns;
// 3: create the new column array if it doesn't exist, otherwise use the old one
var col_arr = new_array[col_num] = new_array[col_num] || [];
// 4: store the value in the correct column
col_arr[ col_arr.length ] = val;
}
说明:
.push()
调用结果:
new_array[0] = [3]
new_array[1] = [1, 4]
new_array[2] = [2, 5]
答案 3 :(得分:0)
注意:在您的函数中,i
变为全局变量,而不是本地变量,因为您没有使用var
。
var mod = 3;
var old_array = ["1","2","3","4","5"];
var new_array = [];
for (var i = 0; i < mod; i++)
{
new_array[i] = [];
}
for (var i = 0; i < old_array.length; i++)
{
new_array[old_array[i] % mod].push(old_array[i]);
}
答案 4 :(得分:0)
几乎就在那里。您只需将子数组添加到new_array
中var old_array = ["1","2","3","4","5"];
var new_array = [[], [], []]
for(i=0; i<old_array.length; i++)
{
new_array[i%3].push(old_array[i]);
}