2013-12-19 5 views
0

Я нахожусь в API, построенном с использованием CakePHP. Cake возвращает свои объекты следующим образом:Упрощение ассоциативного массива

[ 
    { 
     "Note": { 
      "id": "1", 
      "clas": "test", 
      "obj_id": null, 
      "note": "test" 
     } 
    }, 
    { 
     "Note": { 
      "id": "2", 
      "clas": "another", 
      "obj_id": null, 
      "note": "another" 
     } 
    } 
] 

Что я хочу сделать, это взять этот результат и в основном избавиться от ключей. Что-то вроде этого:

[ 
    { 
      "id": "1", 
      "clas": "test", 
      "obj_id": null, 
      "note": "test" 
    }, 
    { 
      "id": "2", 
      "clas": "another", 
      "obj_id": null, 
      "note": "another" 
    } 
] 

Я в основном просто пытаюсь упростить ссылку на это в Угловом. Мне нужно сделать это на стороне клиента. Есть идеи?

+0

Как вы получаете этот результат? Я имею в виду, прежде чем получить JSON. Возможно, вы можете использовать Hash :: extract() –

+0

@GuillemoMansilla «Мне нужно сделать это на стороне клиента». : -/ – brandonscript

ответ

4

Вы можете реорганизовать его следующим образом:

var json = '[{"Note":{"id":"1","clas":"test","obj_id":null,"note":"test"}},{"Note":{"id":"2","clas":"another","obj_id":null,"note":"another"}}]'; 

var obj = JSON.parse(json); 
var arr = []; 
for (i = 0; i < obj.length; i++) 
{ 
    arr.push(obj[i].Note); 
} 

Рабочий пример here

(Примечание также, что если ключ значение «Примечание» не всегда то же самое, это резко изменится. Вполне вероятно, что «Примечание» не будет одинаковым в каждом экземпляре: это приведет к созданию неправильно введенного объекта. Альтернативно, если вам всегда нужен первый объект в массиве, вы можете использовать вместо него obj[i][0]).

(Больше примечание если вы используете CakePHP, это было бы гораздо проще сделать с помощью Hash::, но если вам нужно сделать это на стороне клиента, это решение).

+0

Спасибо r3mus, что вы совершенно правы. Я не могу гарантировать, что у меня будет ключ каждый раз. Я собираюсь отбросить это назад через забор к бэкэнд-парням и посмотреть, не могу ли я заставить их облегчить жизнь с хешем. Однако ваши решения полностью работают в этом случае. –

+0

Yep;) Я все время разбираюсь с подобными вещами, имеет гораздо больше смысла рефакторировать на заднем конце. Но независимо от того, если вам нужно это сделать, вы можете. – brandonscript

Смежные вопросы