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.