简体   繁体   中英

How to add a bunch of arrays to a single array

I have a bunch of individual arrays that get filled with data, but because I want to form a league table, I want to add all these individual arrays to a single array called teams which I can then use to order in terms of points, but I don't know what (or if) there is a function that I can use to get my new array to look like this

//What I want it to look like

var teams[
{id: 1, name: "ACMilan", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0},
{id: 2, name: "ASRoma", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0},
{id: 3, name: "Atalanta", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0},
{id: 4, name: "Bologna", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0},
 //and so on and son
];


//The individual arrays I want to use to create a single array
var ACMilan = [
{id: 1, name: "ACMilan", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0},
];
var ASRoma = [
{id: 2, name: "ASRoma", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0},
];
var Atalanta = [
{id: 3, name: "Atalanta", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0},
];
var Bologna = [
{id: 4, name: "Bologna", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0},
];
var Cagliari = [
{id: 5, name: "Cagliari", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0},
];
var Chievo = [
{id: 6, name: "Chievo", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0},
];

Try this function:

 "use strict"; var ACMilan = [ {id: 1, name: "ACMilan", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0}, ]; var ASRoma = [ {id: 2, name: "ASRoma", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0}, ]; var Atalanta = [ {id: 3, name: "Atalanta", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0}, ]; var Bologna = [ {id: 4, name: "Bologna", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0}, ]; var Cagliari = [ {id: 5, name: "Cagliari", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0}, ]; var Chievo = [ {id: 6, name: "Chievo", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0}, ]; var teams = []; function createTeamArray() { for (var i = 0, max = arguments.length; i < max; i++) { teams = teams.concat(arguments[i][0]); } } createTeamArray(ACMilan, ASRoma, Atalanta, Bologna, Cagliari, Chievo); console.log(teams); 

I don't see the need here to keep a single object in an array. Remove the array brackets.

var newArray = [ACMilan, ASRoma, Atalanta, Bologna, Cagliari, Chievo]

You can try to get all window variables and check them by mask. If any variable looks like your team mask you'll add it's data to an array. I don't know if this code will start correctly on this page but it's okay on my local machine or in plunker ( https://plnkr.co/edit/ic5YsX8F8W0uSa4ePAL3?p=preview ). Also you don't need to know all team names, just team object values for it's mask)

 "use strict"; var ACMilan = [ {id: 1, name: "ACMilan", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0}, ]; var ASRoma = [ {id: 2, name: "ASRoma", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0}, ]; var Atalanta = [ {id: 3, name: "Atalanta", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0}, ]; var Bologna = [ {id: 4, name: "Bologna", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0}, ]; var Cagliari = [ {id: 5, name: "Cagliari", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0}, ]; var Chievo = [ {id: 6, name: "Chievo", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0}, ]; var teams = []; function getTeams() { for (var keys in window) { if(Array.isArray(window[keys])) { if (window[keys][0].hasOwnProperty('id') && window[keys][0].hasOwnProperty('name') && window[keys][0].hasOwnProperty('GP') && window[keys][0].hasOwnProperty('W') && window[keys][0].hasOwnProperty('D') && window[keys][0].hasOwnProperty('L') && window[keys][0].hasOwnProperty('GF') && window[keys][0].hasOwnProperty('GA') && window[keys][0].hasOwnProperty('pts')) { var cache = false; for (var i = 0, max = teams.length; i < max; i++) { if (window[keys][0]['name'] === teams[i]['name'] && cache === false) { cache = true; } } if (!cache) { teams = teams.concat(window[keys][0]); } } } } } getTeams(); console.log(teams); 

Just push all array elements into an array if you are using ES6 it is very easy

var ACMilan = [
    {id: 1, name: "ACMilan", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0},
];
var ASRoma = [
    {id: 2, name: "ASRoma", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0},
];
var Atalanta = [
    {id: 3, name: "Atalanta", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0},
];
var Bologna = [
    {id: 4, name: "Bologna", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0},
];
var Cagliari = [
    {id: 5, name: "Cagliari", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0},
];
var Chievo = [
    {id: 6, name: "Chievo", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0},
];

var teams = [
    ...ACMilan,
    ...ASRoma,
    ...Atalanta,
    ...Bologna,
    ...Cagliari,
    ...Chievo
];

console.log(teams);

And if you are using ES5 then simple do this

 let team2 = [].concat(ACMilan, 
                  ASRoma, 
                  Atalanta,
                  Bologna,
                  Cagliari, 
                 Chievo);

 console.log(team2);
   var ACMilan = [
      {id: 1, name: "ACMilan", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0},
    ];
   var ASRoma = [
   {id: 2, name: "ASRoma", GP:0, W: 0, D: 0, L:0, GF:0, GA:0, pts:0},
   ];
   var teams = [];
   teams.push(ACMilan);
   teams.push(ASRoma);

There are many different ways to do what you want. A simple solution, is just push each array using teams.push() . While Using concat() will create and return a new array, push() will just append a new element into the array.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM