다음 배열이 있고 .find
ID를 제공 하여 자식 배열 값을 인쇄하려고합니다.
connections = [
{
group: 'a',
items: [
{
id: '1',
name: 'Andre'
},
{
id: '2',
name: 'David'
}
]
},
{
group: 'b',
items: [
{
id: '3',
name: 'Brandon'
}
]
},
]
Angular 앱에서 다음을 시도했습니다.
getUser(id) {
this.activeItem = this.connections.items.find(data => data.id === id);
console.log(this.activeItem);
}
올바른 ID를 제공했지만 다음과 같은 오류 메시지가 나타납니다.
오류 TS2339 : 'items'속성이 유형에 없습니다 ....
감사합니다.
filter
및 some
방법을 사용할 수 있습니다 . 이 접근 방식은 배열을 필터링하고 배열에는 원하는 항목 만 포함됩니다.
let connections = [
{
group: 'a',
items: [
{
id: '1', name: 'Andre'
},
{
id: '2', name: 'David'
}
]
},
{
group: 'b',
items: [
{
id: '3', name: 'Brandon'
}
]
},
]
let id = 3;
// ONE WAY
const result = connections.filter(f=> f.items.some(s=> s.id == id))
.flatMap(fm => fm.items);
console.log(`result: `, result);
// OR ANOTHER WAY:
const resultWithGroup = connections.filter(f=> f.items.some(s=> s.id == id));
const resultItem = Object.assign({}, ...resultWithGroup).items.find(f => f.id == id);
console.log(`resultItem: `, resultItem);
console.log(`resultItem as an array: `, [resultItem]);
또한 flatMap 메소드 를 사용할 수 있습니다 . 이 접근 방식을 사용하면 원하는 모든 항목을 얻은 id
다음 다음을 사용하여 첫 번째 요소를 찾습니다 id == 3
.
let connections = [
{
group: 'a',
items: [
{
id: '1', name: 'Andre'
},
{
id: '2', name: 'David'
}
]
},
{
group: 'b',
items: [
{
id: '3', name: 'Brandon'
}
]
},
]
const result = connections.flatMap(f => f.items).find(f => f.id == id);
console.log(`result as array`, [result]);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다