JS ObjectArray Class, .search('id') .move('id','to') .remove('id') etc...
JavaScript
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
test
.gitignore
.travis.yml
LICENSE
README.md
index.js
package.json

README.md

Clase ObjectArray

license Build Status npm version Github release npm downloads

La Clase ObjectArray permite instanciar un objeto de tipo ObjectArray, un array de objetos con métodos para insertar, borrar y mover los objetos en el array. npm

La idea trata de tener un Array de Objetos, cuyos objetos tienen una propiedad que los identifica de forma única. Esta propiedad por defecto es 'id'. Al objeto se le dota de una serie de métodos para manejar este array de objetos.

var oa = new ObjectArray();

Es posible instanciar el objeto con datos:

var oa = new ObjectArray(
    {id:'a',something:'a...'},
    {id:'c',something:'c...'}
);

Esto convertirá a la variable oa en un Array de Objetos, donde cada objeto que compone el array se identificará mediante una propiedad, por defecto 'id'. Además añade a la instancia una serie métodos para trabajar con el array de objetos.

Métodos

ObjectArray.prototype.insert (element [, index, pid])

Inserta un objeto element en el array, en la posición indicada por index, y si es necesario indicando un pid.

  • element: objeto a insertar en el arrayObject.
  • index: Posición de la inserción. La posión puede ser Integer o String. Un Integer especifica la posición del array, mientas que un String especifica el valor de la propiedad usada para identificar a un objeto del array, si no se especifica un pid se toma por defecto 'id'.
  • pid: propiedad de identificación del objeto del array. Por defecto es 'id'.

Devuelve una referencia al objeto. Si no encuentra index el elemento se inserta al final. Siempre se realiza inserción.

oa.insert({'id': 'OB-0', 'something' : 'ob-0...'}, 0 );
// Inserta el objeto en la posición 0 del array.
oa.insert({'id': 'OB-3', 'something' : 'ob-3...'}, 'OB-2' );
// Inserta el objeto en la posición que ocupa el objeto cuyo id='OB-2';
oa.insert({'id': 'OB-4', 'something' : 'ob-4...'}, 'ob-2...','something' );
// Inserta el objeto en la posición del objeto cuya propiedad 'something'='ob-2...'; 
// Será la posición del objeto que primero coincida.
// Si no se localiza el elemento que se busca, se inserta el último.

Si index es Integer, inserta el objeto element en esta posición. Si index es String, inserta el objeto element en la posición que ocupe el primer elemento cuyo identificador id sea igual a index. Podemos especificar un identificador diferente de id con el parámetro pid.

ObjectArray.prototype.insertAfter (element, index [, pid])

Igual que insert, pero inserAfter inserta después de la posición encontrada.

ObjectArray.prototype.get (index [, pid])

Devuelve el objeto que ocupa la posición index. Si index es Integer indica la posición en el array; si es String, será el primer elemento cuyo identificador 'id' sea igual a index. En caso de especificar pid, devolverá el primer elemento cuya propiedad pid sea igual a index. Devuelve undefined si no encuentra nada, si encuentra el elemento lo devuelve.

oa.get(0);
// Devuelve el objeto en la posición 0 del array.
oa.get('OB-2');
// Devuelve el objeto cuyo id='OB-2'
oa.get('ob-2...','something');
// Devuelve un objeto cuya propiedad 'something'='ob-2...'

ObjectArray.prototype.getAll (index [, pid])

Su funcionamiento es similar a ObjectArray.prototype.get(), pero en lugar de devolver sólo el primer elemento cuyo identificador 'id' sea igual a index, devuelve todos los objetos cuyo 'id' sea igual a index. En el caso de especificar pid, devolverá todos los elementos cuya propiedad pid sea igual a index.

ObjectArray.prototype.search (index [, pid])

Devuelve el indice del primer objeto encontrado cuya propiedad 'id'=index. Si se especifica pid, se busca en la propiedad pid indicada en vez de en 'id'

  • index: string del valor de la propiedad 'id' en caso de no especificar pid.
  • pid: string que especifica la propiedad

En este método index no debe ser Integer.

Devuelve el índice en el array del objeto.

oa.search('OB-0');
// Devuelve la posición del objeto en el array.

ObjectArray.prototype.searchAll (index [, pid])

Funcionamiento similar a ObjectArray.prototype.search(), pero en vez de devolver el indice del primer objeto, devuelve los indices de todos los objetos cuya propiedad 'id'=index. Si se especifica pid, se busca en la propiedad pid el valor index.

ObjectArray.prototype.values (pid)

Devuelve todos los valores del pid existentes en el ObjectArray.

oa.values('id');

ObjectArray.prototype.move (index, indexTo [, pid])

Mueve el objeto ubicado en la posición index a la posición indexTo, desplazando el resto de elementos hacia arriba. Si la propiedad que se quiere utilizar para identificar a los objetos es diferente de 'id' se puede utilizar el parámetro pid.

  • index: integer o string. Integer define la posición en el array, string el valor de la propiedad que tomamos para realizar la comparación.
  • indexTo: integer o string. Integer define la posición en el array, string el valor de la propiedad que tomamos para realizar la comparación.
  • pid: propiedad usada en la identificación del objeto, por defecto es 'id'.
oa.move(0, 3);
// Mueve el objeto ubicado en la posición 0 a la 3. Reordenando el array.
oa.move('OB-1', 3);
// Mueve el objeto con 'id'='OB-1' a la posición 3. Reordenando el array.
oa.move('OB-1', 'OB-3');
// Mueve el objeto con 'id'='OB-1' a la posición del objeto con 'id'='OB-3. Reordenando el array.

ObjectArray.prototype.moveAfter (index, indexTo [, pid])

Igual que .move() pero moviendo el objeto ubicado en la posición index a la posición después de indexTo.

ObjectArray.prototype.remove (index [, pid])

Elimina el objeto de la posición indicada en index, si index es Integer. Si es string, elimina el objeto cuya propiedad 'id'=index, en el caso de especificar pid, elimina el objeto cuya propiedad pid=index.

Devuelve true si el objeto se ha borrado correctamente.

Ejemplos

Ejemplo en jsfiddle.net - Al final está el código del ejemplo.

Licencia

MIT