Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Поиск по json-массиву (https://javascript.ru/forum/jquery/34083-poisk-po-json-massivu.html)

Dimaz 19.12.2012 22:19

Поиск по json-массиву
 
Всем привет. Есть такой json-массив:
[{"name":"Dmitry", "lastname":"Ivanov"},{"name":"Dmitry", "lastname":"Petrov"}]

Как достать из него список всех фамилий, только если имя Dmitry?

Hoshinokoe 19.12.2012 23:22

Dimaz,

Как-то так:
if (!Array.prototype.filter)
{
  Array.prototype.filter = function(fun)
  {
    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]; 
        if (fun.call(thisp, val, i, this))
          res.push(val);
      }
    }

    return res;
  };
}

var data = [{"name":"Dmitry", "lastname":"Ivanov"},{"name":"Dmitry", "lastname":"Petrov"}, {"name":"Dimaz", "lastname":"Petrov"}];
var filtered  = data.filter(function (element, index, array)
{
    return element.name == "Dmitry";
});


P.S. если юзать jquery, то так:
var arr = jQuery.grep(data , function (element, index) { return element.name == "Dmitry"; });

Dimaz 19.12.2012 23:46

Я так сделал, пока отвечали. Вроде работает.
var x = [{"name":"Dmitry","lastname":"Zakharov"},{"name":"Oleg","lastname":"Ivanov"},{"name":"Dmitry","lastname":"Petrov"}];
var y = [];
for(var i=0, a=0; i<x.length; i++,a++){
    if(x[i].name=="Dmitry"){
    y[a] = x[i].lastname;
    } else{a--;}
}     
$('b').text(y);​

Результат записал в массив y. Выводит Zakharov, Petrov.


Часовой пояс GMT +3, время: 14:12.