Как я могу получить доступ к нескольким значениям вложенного объекта JSON? - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь получить доступ к своему data json-файлу:

[{"id":1,"name":"Maria","project":[{"id":5,"name":"Animals"},{"id":6,"name":"Cats"}]}

Это мой подход:

data[0].name;

Но вот так я получаю только результат:

Animals

Но мне нужен результат:

Animals, Cats

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Если это ваш фактический объект данных, то data[0].name даст вам "Мария". Если я правильно читаю, вы хотите получить все имена из массива project. Вы можете использовать Array.map, чтобы сделать это довольно легко. Обратите внимание на использование ES6 arrow function для быстрого и простого восприятия объекта и возвращения его имени.

var bigObject = [{"id":1,"name":"Maria","project":[{"id":5,"name":"Animals"},{"id":6,"name":"Cats"}]}];
var smallObject = [{"id":5,"name":"Animals"},{"id":6,"name":"Cats"}];

console.log("Getting the names from the full array/data structure: "+bigObject[0].project.map(obj => obj.name))
console.log("Getting the names from just the project array: "+smallObject.map(obj => obj.name))

РЕДАКТИРОВАТЬ: Согласно вашему комментарию к другому ответу, вы сказали, что вам нужно использовать решение в этой функции:

"render": function (data, type, row) {if(Array.isArray(data)){return data.name;}}

Чтобы достичь этого, похоже, что вы должны использовать мое нижнее решение первого фрагмента следующим образом:

var data = [{"id":5,"name":"Animals"},{"id":6,"name":"Cats"}];

function render(data, type, row){
  if(Array.isArray(data)){
    return data.map(obj => obj.name);
  }
};

console.log("Render returns \""+render(data)+"\" as an array.");
0 голосов
/ 03 января 2019

Вы получаете доступ только к свойству name 0-го индекса массива проекта.Чтобы получить доступ ко всем объектам одновременно, вам нужно перебрать массив.Для этого вы можете использовать Array.map .

var data = [{"id":1,"name":"Maria","project":[{"id":5,"name":"Animals"},{"id":6,"name":"Cats"}]}]

var out = data[0].project.map(project => project.name).toString()

console.log(out)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...