Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.12.2012, 22:19
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

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

Как достать из него список всех фамилий, только если имя Dmitry?
Ответить с цитированием
  #2 (permalink)  
Старый 19.12.2012, 23:22
Профессор
Отправить личное сообщение для Hoshinokoe Посмотреть профиль Найти все сообщения от Hoshinokoe
 
Регистрация: 08.01.2012
Сообщений: 253

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"; });

Последний раз редактировалось Hoshinokoe, 19.12.2012 в 23:30.
Ответить с цитированием
  #3 (permalink)  
Старый 19.12.2012, 23:46
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Я так сделал, пока отвечали. Вроде работает.
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.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Профессиональный поиск по массиву RazZzeR Элементы интерфейса 14 10.06.2012 13:07
Поиск по многомерному массиву Ultimatum Общие вопросы Javascript 12 20.11.2011 14:53
поиск по массиву zebulun Общие вопросы Javascript 4 02.09.2011 02:09
JSON или JSONP для запросов на другой сервер? Метод GET, для длинных сообщений? Kotakota jQuery 5 23.08.2011 23:12
jQuery. Обработка ошибок и JSON. mma_mma jQuery 3 19.07.2010 12:10