@Andriy022

Как вывести элементы массива?

Мне нужно выводить все name, как это сделать правильно, чтобы в конце не было андефайнед?

const arr = [
        {
            genre_ids: [
                {
                    id: 1,
                    name: 'Petya'
                },
                {
                    id: 2,
                    name: 'Ira'
                },
                {
                    id: 3,
                    name: 'Andriy'
                }
            ],
            id: 6346234,
            title: "Spider-Man: No Way Home",
        }
    ]
  • Вопрос задан
  • 106 просмотров
Решения вопроса 3
@VAKrasheninnikov
const newArr = arr[0].genre_ids.map((el)=>el.name)

console.log(newArr)
Ответ написан
Комментировать
Gavr_Gavr
@Gavr_Gavr
arr.forEach((item) => {
      item.genre_ids.forEach((subitem) => {
         console.log(subitem.name)
      });
   })
Ответ написан
Комментировать
@FIREguardSPB
Можете использовать эту функцию для вывода массива с значениями указанного поля.
По идее должно работать с любой вложенностью (многомерностью).
obj - массив или объект в котором нужно найти значения
fieldName - название поля в строковом формате значения которого нужно собрать
пример запуска
console.log(picker(arr, 'name'))
Вывод для массива представленного автором будем таким -
[ 'Petya', 'Ira', 'Andriy' ]

const picker = (obj, fieldName) => {
  const result = []
  const collectItems = (obj, fieldName) => {
    if ((typeof obj !== 'object') && (!Array.isArray(obj))) {
      return result
    }
    if (Array.isArray(obj)) {
      obj.forEach(el => {
        collectItems(el, fieldName)
      })
    }
    if ((typeof obj === 'object') && (!Array.isArray(obj))) {
      for (let key in obj) {
        if (key === fieldName) {
          result.push(obj[key])
        }
        if ((typeof obj[key] === 'object') || (Array.isArray(obj[key]))) {
          collectItems(obj[key], fieldName)
        }
      }
    }
  }
  collectItems(obj, fieldName)
  return result
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы