Как правильно обратиться к объекту в массиве в объекте?

Имеется структура такого вида:

[ 
  {
    "Emails": [{ 
      "id": 9, 
      "user_id": 1, 
      "email": "[email protected]"
    }],
    "Something": [{
      "id": 1,
      "name": "some"
    }]
  }
]

Как правильно обратиться к значению email? На данный момент я сделал перебор по массиву и пробовал обратиться как-то так:

//.foreach(item)

item["Emails"][0]["email"] 

Но так я не получаю искомое


Ответы (2 шт):

Автор решения: XelaNimed

Сначала обратитесь к массиву:

const obj = [{
    "Emails":
    [{
        "id": 9,
        "user_id": 1,
        "email": "[email protected]"
    }],
    "Something":
    [{
        "id": 1,
        "name": "some"
    }]
}];
console.log("email: %s", obj[0].Emails[0].email);
obj.forEach(function(item){
    console.log("in foreach email: %s", item.Emails[0].email);
});

→ Ссылка
Автор решения: Pavel Nazarian

Смею допустить, что Emails как массив тоже может содержать не один элемент.

let arr = [ 
 {
  "Emails": [{ 
     "id": 9, 
     "user_id": 1, 
     "email": "[email protected]"
    },{ 
     "id": 8, 
     "user_id": 3, 
     "email": "[email protected]"
    }],
  "Something": [{
     "id": 1,
     "name": "some"
    }]
 },
 {
  "Emails": [{ 
     "id": 9, 
     "user_id": 1, 
     "email": "[email protected]"
    },{ 
     "id": 8, 
     "user_id": 3, 
     "email": "[email protected]"
    }],
  "Something": [{
     "id": 1,
     "name": "some"
    }]
  }
]

const test1 = () => {
   return arr.map(({Emails}) => Emails.map(e => e.email));
}

const test2 = () => {
   return arr.reduce((acc,{Emails}) => {acc.push(...Emails.map(e => e.email)); return acc;} ,[])
}

console.log(test1())
console.log(test2())

→ Ссылка