JavaScript:如何将数组中的数据推送到子数组中,每 16 个项目都有一个数组
JavaScript: How to push data in array, into subarrays with an array for each 16 items
我有一个示例数据集。我想将这些数据推送到一个数组中,每 16 条数据有一个子数组。我开始了,但卡住了。有什么想法吗?
[ [16 names], [16 names ], [16 names] ]; // This is the output I want.
var data = ["Michael", "Marc", "John", "David", "Nick", "Mom", "Al", "Marlana", "Max",
"Scooter", "Pat", "George", "Lynne", "Tatyana", "Kim", "Kerry", "Enza", "Matt",
"Liz", "Linda", "Ryan",
"Ed", "Frank", "Christine", "Bill", "Jack", "Jill", "Joe", "Harry", "Red",
"Fred", "Iggy", "Brian", "Bob", "Paul", "Gil", "Damian", "Kip", "Phil", "Curtis", "Aly",
"Richard", "Robin", "Grant", "Ian", "Raptor", "T-Rex", "Stegosaurux", "Triceratops", "Compy"]
var sixteengroup = [];
for (var i = 0; i < data.length; i++){
if (i % 16 == 0) sixteengroup.push([i])
}
console.log(sixteengroup);
尝试以下操作:
function split(a, n) {
var len = a.length,out = [], i = 0;
while (i < len) {
var size = Math.ceil((len - i) / n--);
out.push(a.slice(i, i += size));
}
return out;
}
var data = ["Michael", "Marc", "John", "David", "Nick", "Mom", "Al", "Marlana", "Max",
"Scooter", "Pat", "George", "Lynne", "Tatyana", "Kim", "Kerry", "Enza", "Matt",
"Liz", "Linda", "Ryan",
"Ed", "Frank", "Christine", "Bill", "Jack", "Jill", "Joe", "Harry", "Red",
"Fred", "Iggy", "Brian", "Bob", "Paul", "Gil", "Damian", "Kip", "Phil", "Curtis", "Aly",
"Richard", "Robin", "Grant", "Ian", "Raptor", "T-Rex", "Stegosaurux", "Triceratops", "Compy"]
sixteengroup = split(data, data.length/16);
document.write(JSON.stringify(sixteengroup));
我用这个函数按任意数字分组
groupBy = function (array,howmany)
{
var newarray =[];
index=0;
for(a=0;a<array.length;a++){
if(a%howmany==0){
if(a!=0)
index++;
newarray[index]=[];
newarray[index].push(array[a]);
}else{
newarray[index].push(array[a]);
}
}
return newarray;
}
items=groupBy(data,16);
拼接(破坏性)或切片听起来是个好主意
var data = ["Michael", "Marc", "John", "David", "Nick", "Mom", "Al", "Marlana", "Max","Scooter", "Pat", "George", "Lynne", "Tatyana", "Kim", "Kerry", "Enza", "Matt","Liz", "Linda", "Ryan", "Ed", "Frank", "Christine", "Bill", "Jack", "Jill", "Joe", "Harry", "Red", "Fred", "Iggy", "Brian", "Bob", "Paul", "Gil", "Damian", "Kip", "Phil", "Curtis", "Aly", "Richard", "Robin", "Grant", "Ian", "Raptor", "T-Rex", "Stegosaurux", "Triceratops", "Compy"]
function chunk(source,size) { // non-destructive
var arrofarr=[], cnt=0;
while (cnt < source.length) {
arrofarr.push(source.slice(cnt,cnt+size));
cnt+= arrofarr[arrofarr.length-1].length;
}
return arrofarr;
}
console.log(chunk(data,16));
// ----------------------------------
function chunkie(source,size) { // destructive
var arrofarr=[];
while (source.length) { arrofarr.push(source.splice(0,size)); }
return arrofarr;
}
console.log(chunkie(data,16));
试试这个:
var data = ["Michael", "Marc", "John", "David", "Nick", "Mom", "Al", "Marlana", "Max",
"Scooter", "Pat", "George", "Lynne", "Tatyana", "Kim", "Kerry", "Enza", "Matt",
"Liz", "Linda", "Ryan",
"Ed", "Frank", "Christine", "Bill", "Jack", "Jill", "Joe", "Harry", "Red",
"Fred", "Iggy", "Brian", "Bob", "Paul", "Gil", "Damian", "Kip", "Phil", "Curtis", "Aly",
"Richard", "Robin", "Grant", "Ian", "Raptor", "T-Rex", "Stegosaurux", "Triceratops", "Compy"]
var sixteengroup = [];
var x = -1;
for (var i = 0; i < data.length; i++){
if (i % 16 == 0) {
sixteengroup[++x] = [data[i]]
continue;
}
sixteengroup[x].push(data[i])
}
console.log(sixteengroup);
Fiddle 这里:https://jsfiddle.net/n9ro2vwr/1/
也许创建一个带有 2 个参数的函数来拥有数组,第二个参数来限制每秒面额数组的项目数量,就像这样?
function data(arr, size) {
var array = [];
while(arr.length > 0){
array.push(arr.splice(0,size));
}
return console.log(array);
}
data(["Michael", "Marc", "John", "David", "Nick", "Mom", "Al", "Marlana", "Max",
"Scooter", "Pat", "George", "Lynne", "Tatyana", "Kim", "Kerry", "Enza", "Matt",
"Liz", "Linda", "Ryan",
"Ed", "Frank", "Christine", "Bill", "Jack", "Jill", "Joe", "Harry", "Red",
"Fred", "Iggy", "Brian", "Bob", "Paul", "Gil", "Damian", "Kip", "Phil", "Curtis", "Aly",
"Richard", "Robin", "Grant", "Ian", "Raptor", "T-Rex", "Stegosaurux", "Triceratops", "Compy"], 16)
https://jsfiddle.net/ToreanJoel/dq7t7snx/
你可以玩玩看看合不合你的口味
我有一个示例数据集。我想将这些数据推送到一个数组中,每 16 条数据有一个子数组。我开始了,但卡住了。有什么想法吗?
[ [16 names], [16 names ], [16 names] ]; // This is the output I want.
var data = ["Michael", "Marc", "John", "David", "Nick", "Mom", "Al", "Marlana", "Max",
"Scooter", "Pat", "George", "Lynne", "Tatyana", "Kim", "Kerry", "Enza", "Matt",
"Liz", "Linda", "Ryan",
"Ed", "Frank", "Christine", "Bill", "Jack", "Jill", "Joe", "Harry", "Red",
"Fred", "Iggy", "Brian", "Bob", "Paul", "Gil", "Damian", "Kip", "Phil", "Curtis", "Aly",
"Richard", "Robin", "Grant", "Ian", "Raptor", "T-Rex", "Stegosaurux", "Triceratops", "Compy"]
var sixteengroup = [];
for (var i = 0; i < data.length; i++){
if (i % 16 == 0) sixteengroup.push([i])
}
console.log(sixteengroup);
尝试以下操作:
function split(a, n) {
var len = a.length,out = [], i = 0;
while (i < len) {
var size = Math.ceil((len - i) / n--);
out.push(a.slice(i, i += size));
}
return out;
}
var data = ["Michael", "Marc", "John", "David", "Nick", "Mom", "Al", "Marlana", "Max",
"Scooter", "Pat", "George", "Lynne", "Tatyana", "Kim", "Kerry", "Enza", "Matt",
"Liz", "Linda", "Ryan",
"Ed", "Frank", "Christine", "Bill", "Jack", "Jill", "Joe", "Harry", "Red",
"Fred", "Iggy", "Brian", "Bob", "Paul", "Gil", "Damian", "Kip", "Phil", "Curtis", "Aly",
"Richard", "Robin", "Grant", "Ian", "Raptor", "T-Rex", "Stegosaurux", "Triceratops", "Compy"]
sixteengroup = split(data, data.length/16);
document.write(JSON.stringify(sixteengroup));
我用这个函数按任意数字分组
groupBy = function (array,howmany)
{
var newarray =[];
index=0;
for(a=0;a<array.length;a++){
if(a%howmany==0){
if(a!=0)
index++;
newarray[index]=[];
newarray[index].push(array[a]);
}else{
newarray[index].push(array[a]);
}
}
return newarray;
}
items=groupBy(data,16);
拼接(破坏性)或切片听起来是个好主意
var data = ["Michael", "Marc", "John", "David", "Nick", "Mom", "Al", "Marlana", "Max","Scooter", "Pat", "George", "Lynne", "Tatyana", "Kim", "Kerry", "Enza", "Matt","Liz", "Linda", "Ryan", "Ed", "Frank", "Christine", "Bill", "Jack", "Jill", "Joe", "Harry", "Red", "Fred", "Iggy", "Brian", "Bob", "Paul", "Gil", "Damian", "Kip", "Phil", "Curtis", "Aly", "Richard", "Robin", "Grant", "Ian", "Raptor", "T-Rex", "Stegosaurux", "Triceratops", "Compy"]
function chunk(source,size) { // non-destructive
var arrofarr=[], cnt=0;
while (cnt < source.length) {
arrofarr.push(source.slice(cnt,cnt+size));
cnt+= arrofarr[arrofarr.length-1].length;
}
return arrofarr;
}
console.log(chunk(data,16));
// ----------------------------------
function chunkie(source,size) { // destructive
var arrofarr=[];
while (source.length) { arrofarr.push(source.splice(0,size)); }
return arrofarr;
}
console.log(chunkie(data,16));
试试这个:
var data = ["Michael", "Marc", "John", "David", "Nick", "Mom", "Al", "Marlana", "Max",
"Scooter", "Pat", "George", "Lynne", "Tatyana", "Kim", "Kerry", "Enza", "Matt",
"Liz", "Linda", "Ryan",
"Ed", "Frank", "Christine", "Bill", "Jack", "Jill", "Joe", "Harry", "Red",
"Fred", "Iggy", "Brian", "Bob", "Paul", "Gil", "Damian", "Kip", "Phil", "Curtis", "Aly",
"Richard", "Robin", "Grant", "Ian", "Raptor", "T-Rex", "Stegosaurux", "Triceratops", "Compy"]
var sixteengroup = [];
var x = -1;
for (var i = 0; i < data.length; i++){
if (i % 16 == 0) {
sixteengroup[++x] = [data[i]]
continue;
}
sixteengroup[x].push(data[i])
}
console.log(sixteengroup);
Fiddle 这里:https://jsfiddle.net/n9ro2vwr/1/
也许创建一个带有 2 个参数的函数来拥有数组,第二个参数来限制每秒面额数组的项目数量,就像这样?
function data(arr, size) {
var array = [];
while(arr.length > 0){
array.push(arr.splice(0,size));
}
return console.log(array);
}
data(["Michael", "Marc", "John", "David", "Nick", "Mom", "Al", "Marlana", "Max",
"Scooter", "Pat", "George", "Lynne", "Tatyana", "Kim", "Kerry", "Enza", "Matt",
"Liz", "Linda", "Ryan",
"Ed", "Frank", "Christine", "Bill", "Jack", "Jill", "Joe", "Harry", "Red",
"Fred", "Iggy", "Brian", "Bob", "Paul", "Gil", "Damian", "Kip", "Phil", "Curtis", "Aly",
"Richard", "Robin", "Grant", "Ian", "Raptor", "T-Rex", "Stegosaurux", "Triceratops", "Compy"], 16)
https://jsfiddle.net/ToreanJoel/dq7t7snx/
你可以玩玩看看合不合你的口味