Saltar al contenido

Cómo filtrar JavaScript multidimensional array

Recuerda que en la informática un problema casi siempre tiene varias resoluciones, por lo tanto nosotros aquí enseñamos lo más óptimo y eficiente.

Solución:

No hay ninguna función para esto en Javascript. Tienes que escribir tu propia función como esta.

var arr = ["nid":"31","0":"tid":"20","name":"Bench Press","objectDate":"2012-02-08","goal":"rep","result":"55.00","comments":"sick!","maxload":"250","1":"tid":"22","name":"Back Squat","objectDate":"2012-02-08","goal":"time","result":"8.00","comments":"i was tired.","maxload":"310","nid":"30","0":"tid":"19","name":"Fran","objectDate":"2012-02-07","goal":"time","result":"5.00","comments":null];


function filterByProperty(array, prop, value)
    var filtered = [];
    for(var i = 0; i < array.length; i++)

        var obj = array[i];

        for(var key in obj)
            if(typeof(obj[key] == "object"))
                var item = obj[key];
                if(item[prop] == value)
                    filtered.push(item);
                
            
        

        

    return filtered;



var byName = filterByProperty(arr, "name", "Fran");
var byGoal = filterByProperty(arr, "goal", "time");

la pregunta es sobre multidimensional arreglos Si te gusto, te perdiste que aquí hay soluciones para arreglos normales...

2020

filteredArray = array.filter(item => item.name.indexOf('Fran') > -1);

o

filteredArray = array.filter(function(item)

    return item.name.indexOf('Fran') > -1);

versión 2012

var result = [];
for (var i = 0; i < array.length; i++)

    if (array[i].name === 'Fran')
    
        result.push(array[i]);
    

Crearía una función para filtrar. :

function filter(array, key, value)
    var i, j, hash = [], item;

    for(i =  0, j = array.length; i

Una solución más sólida podría ser agregar un método de filtro al prototipo:

    `This prototype is provided by the Mozilla foundation and
     is distributed under the MIT license.
     http://www.ibiblio.org/pub/Linux/LICENSES/mit.license`

if (!Array.prototype.filter)

  Array.prototype.filter = function(fun /*, thisp*/)
  
    var len = this.length;
    if (typeof fun != "function")
      throw new TypeError();

    var res = new Array();
    var thisp = arguments[1];
    for (var i = 0; i < len; i++)
    
      if (i in this)
      
        var val = this[i]; // in case fun mutates this
        if (fun.call(thisp, val, i, this))
          res.push(val);
      
    

    return res;
  ;

Entonces simplemente llama:

function filterName (item, index, array) 
  return (item.name === "Fran");


var result = object.filter(filterName);

Aquí tienes las comentarios y valoraciones

Te invitamos a añadir valor a nuestra información colaborando tu veteranía en las interpretaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *