I've read a lot of articles about objects and arrays lately but they had contrary info / facts for some reason. I need your help to learn once and for all: when it's best to use array and when object?
Obvious reason is to use array when you need specific order. What else? What about this example?
- There's a lot of pushing
- There's a lot of checking if array contains something
- There's a lot of removing
Note that this example has much smaller numbers that I need (which is in thousands).
Code I wrote for this question, it has few things I would never do but for the sake of this question:
var x = [];
var y = [];
var z = [];
var clickedX = [];
var clickedY = [];
var clickedZ = [];
var count = 100;
for ( var a = 0; a < count; a++ ) {
    //For the sake of this example: random int 1, 2 or 3
    var type = Math.floor(Math.random() * 3) + 1;
    createDiv( type );
}
function createDiv( thisType ) {
    var self = this;
    var div = self.div;
    var type = thisType;
    if( !div ) {
        div = this.div = document.createElement( 'div' );
        div.className = 'marker';
        //Push to "right" array
        if( type == '1' ) {
            x.push( self );
        }
        else if ( type == '2' ) {
            y.push( self );
        }
        else {
            z.push( self );
        }
        //Attach click event
        div.onclick = function() {
            // X
            var indexX = x.indexOf( self );
            if( indexX > -1 ) { 
                //Push to new array
                clickedX.push( self );
                //Remove from old array
                x.splice( indexX, 1 );
            }
            // Y
            var indexY = y.indexOf( self );
            if( indexY > -1 ) { 
                //Push to new array
                clickedY.push( self );
                //Remove from old array
                y.splice( indexY, 1 );
            }
            // Z
            var indexZ = z.indexOf( self );
            if( indexZ > -1 ) { 
                //Push to new array
                clickedZ.push( self );
                //Remove from old array
                z.splice( indexZ, 1 );
            }
        }; // onclick
    } // if( !div )
} // createDiv()
Data example what Im currently dealing with:
// Data Im dealing with
objects = { 
    { objects1: [
                    0: { object : [4-5 assigned values (int, string, array)] }, 
                    1: { object : [4-5 assigned values (int, string, array)] },
                    //etc
                ] 
    }, 
    { objects2: [
                    0: {object}, 
                    1: {object},
                    //etc
                ] 
    } 
}
// 1. I need to iterate through every "object" in both "objects1" and "objects2"
// 2. I need to iterate through "array" in every "object" in "objects1"
for( /* "object" count in "objects1" */ ) {
    //Do something for each "object" in "objects1"
    for( /* items in "array" count */ ) {
        //Do something for each item in "array"
    }
}
// AND
for( /* "object" count in "objects2" */ ) {
    //Do something for each "object" in "objects2"
}
 
     
     
     
    