¿Cómo puedo hacer una matriz de matrices de objetos personalizados en Javascript?

Entonces, tengo un constructor de objetos de vecindario amigable, así;

function Clip(a, b)
{
    this.track = a
    this.slot = b
    this.path = "live_set tracks " + a + " clip_slots " + b + " clip "
    clip = new LiveAPI(this.patcher, this.path)
    this.length = clip.get("length")
}

Lo que me gustaría hacer es

  1. Agregue un número arbitrario de ellos a una matriz
  2. Cuando la longitud de la matriz llegue a 8, agregue esa matriz a una nueva "súper" matriz y comience una nueva matriz.

En otras palabras, superarray debería permitirme acceder a las propiedades y métodos de los objetos, por ejemplo, clip[0][0].length - clip[0][7].length, clip[1][0].length - clip[1][7].length, etc.

preguntado el 30 de junio de 12 a las 22:06

array, superarray... ¿por qué no trabajar con objetos en su lugar? -

Suena como una especie de configuración de B-Tree. -

@Puntitos MDN: Proxy, Armonía: propuesta de proxy. Solo es compatible con Firefox 4+ y Chrome 19+ (con las banderas experimentales establecidas). Sin embargo, no está listo para su uso en producción. -

@james ¿Puede aclarar su pregunta? ¿Qué necesitas exactamente? ¿Administradores/establecedores dinámicos o ayuda con la ingeniería? -

1 Respuestas

¿Es esto lo que estás buscando? Simplifiqué parte del código, pero la idea general parece encajar.

http://jsfiddle.net/bryandowning/pH6bU/

var superArr = [];

function Clip(a) {
    this.length = a;
}

/*
* num: number of clip collections to add to container
* max: number of clips per collection
* container: array to add collections to
*/
function addClips( num, max, container ){

    while(num--){

        // arr: a collection of clips
        var arr = [];

        for( var i = 0; i < max; i++ ){

            arr.push(
                // just did a random number for the length
                new Clip( Math.floor( Math.random() * 10 ) )
            );

        }

        container.push( arr );

    }

}


addClips( 5, 8, superArr );

console.log( superArr );

console.log( superArr[0][0].length );


​

Respondido el 30 de junio de 12 a las 23:06

Entonces, básicamente, está diciendo, haga una matriz global desde fuera de la función, consúltela en los argumentos y luego haga esto. - Jamesson

container es solo un parámetro con nombre para el addClips función. En realidad no hay nada llamado container fuera del alcance de la addClips función. En mi ejemplo, creé una matriz global llamada superArr. No tiene que ser global, solo debe ser accesible desde cualquier lugar al que llame addclips. superArr se pasa a addClips lo que lo convierte en el container dentro del alcance de addClips. ¿Tener sentido? - bryan bajando

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.