2015-04-18 4 views
-1

Таким образом, эта функция обратного вызова работает нормально и все, но я пытаюсь получить ключевую строку для каждого массива в моем объекте, который подчиняется функции .map (см. Данные ниже).Получить массив ключ от json

Мой объект JSON имеет структуру:

data = object-> 
     users: Array [3] 
      0: joe 
      1: mike 
      2: jon 
     friends: Array[2] 
      0: steve 
      1: peter 

Я хотел бы иметь возможность распечатать «пользователи» и «друзей» и хранить их на языке свойства объекта.

success: function (data) { 
    console.log(data); 
    response($.map(data, function (item) { 
     var array = item; 
     var entities = []; 
     if (array.length > 0) { 
      entities.push({ header: true, language: array }); //my feeble attempt, which print out [object, object] of course 
     } 
     for (i = 0; i < array.length; i++) { 
      var entity = array[i]; 
      entities.push({ 
       label: entity.name, 
       value: entity.name, 
       link: entity.link 
      }); 
     } 
     return entities; 
    })); 
} 
+0

Можете ли вы показать нам пример ожидаемого результата? – chridam

+0

У меня такое чувство, что это может быть проблема XY. Учитывая структуру данных, которую вы указали выше, какова ваша конечная цель? Как вы пытаетесь его трансформировать (и что вы пытаетесь сделать на этом пути)? – royhowie

+0

Спасибо за помощь, ребята, @Leo помогите мне ниже. – ambe5960

ответ

1

Я предполагаю, что $ относится к JQuery.

Итак, для $.map, если первым аргументом является объект, то функция обратного вызова может принимать два аргумента: свойство и строку ключа.

Чтобы получить строку ключа, вам просто нужно добавить второй параметр:

response($.map(data, function (item, key) { 
    console.log(key) 
})); 

Тогда вы увидите users и friends распечатаны.

Кроме того, вы могли бы получить индекс массива со вторым параметром, если первый аргумент $.map массив

См JQuery документ для деталей: http://api.jquery.com/jQuery.map/

+0

Большое спасибо. Я прочитал этот документ, но ожидал более сложного решения, поэтому я заглянул в него. Очень ценю помощь! – ambe5960

+0

@ ambe5960 просто внимательно прочитал документ в следующий раз: D это действительно хорошо документировано. – Leo