Получение списка значения по ключу из вложенного массива JS
Возможно вопрос покажется слишком легким, но он меня завел в ступор...
Как мне получить список значений, которые находятся по ключу PHONE - VALUE?
0:
ID: "40"
PHONE: Array(2)
0: {ID: "186317", VALUE_TYPE: "MOBILE", VALUE: "+3333333333", TYPE_ID: "PHONE"}
1: {ID: "190893", VALUE_TYPE: "WORK", VALUE: "+22222222222", TYPE_ID: "PHONE"}
TITLE: "Title 1"
1:
ID: "47"
PHONE: Array(3)
0: {ID: "310047", VALUE_TYPE: "MOBILE", VALUE: "+777777777", TYPE_ID: "PHONE"}
1: {ID: "310048", VALUE_TYPE: "HOME", VALUE: "+6666666666", TYPE_ID: "PHONE"}
2: {ID: "310049", VALUE_TYPE: "OTHER", VALUE: "+1111111111", TYPE_ID: "PHONE"}
TITLE: "Title 2"
.....
Я пытаюсь сделать это через цикл:
var numberList = [];
for (data in resultData){
numberList.push(resultData[data].PHONE);
}
И при выводе через numberList.VALUE получаю undefined
Ответы (2 шт):
Автор решения: Pavel Nazarian
→ Ссылка
const obj = {
0: {
ID: "40",
PHONE: [
{ID: "186317", VALUE_TYPE: "MOBILE", VALUE: "+3333333333", TYPE_ID: "PHONE"},
{ID: "190893", VALUE_TYPE: "WORK", VALUE: "+22222222222", TYPE_ID: "PHONE"}
],
TITLE: "Title 1"},
1: {
ID: "47",
PHONE: [
{ID: "310047", VALUE_TYPE: "MOBILE", VALUE: "+777777777", TYPE_ID: "PHONE"},
{ID: "310048", VALUE_TYPE: "HOME", VALUE: "+6666666666", TYPE_ID: "PHONE"},
{ID: "310049", VALUE_TYPE: "OTHER", VALUE: "+1111111111", TYPE_ID: "PHONE"}
],
TITLE: "Title 2"}
}
let arr = []
Object.values(obj).forEach(el1 => el1.PHONE.forEach(el2 => arr.push(el2.VALUE)))
console.log(arr)
Автор решения: yar85
→ Ссылка
const numberList = resultData.map(itm => itm.PHONE.map(ph => ph.VALUE));
В результате, массив numberList должен содержать подмассивы с номерами, т.е. например
[
["+3333333333", "+22222222222"],
["+777777777", "+6666666666", "+1111111111"]
]
Если же хочется получить одномерный массив (потеряв связанность с resultData по индексу), то такой массив можно получить выражением numberList.flat(1).