[arrays] Angular 2 및 TypeScript로 두 개의 객체 배열을 병합 하시겠습니까?
이 주제에 대한 JavaScript 질문을 살펴 보았습니다.이 질문은 특히 TypeScript를 사용하는 Angular2에 관한 것입니다.
내가하려는 것은 json 객체를 배열에 연결하는 것입니다.
내 코드는 다음과 같습니다.
public results: [];
public getResults(){
this._service.get_search_results(this._slug, this._next).subscribe(
data => {
this.results.concat(data.results);
this._next = data.next;
},
err => {
console.log(err);
}
);
}
typescript 및 angular data.results
로 어떻게 연결할 수 this.results
있습니까?
this._slug
및 this._next
클래스에 설정됩니다.
감사.
답변
차라리 다음을 사용해야한다고 생각합니다.
data => {
this.results = this.results.concat(data.results);
this._next = data.next;
},
로부터 concat
문서 :
concat () 메서드는 인수로 제공된 배열 및 / 또는 값과 결합 된 호출 된 배열로 구성된 새 배열을 반환합니다.
답변
확산 운영자는 좀 냉각된다.
this.results = [ ...this.results, ...data.results];
확산 연산자를 사용하면 확장 된 버전의 배열을 다른 배열에 쉽게 배치 할 수 있습니다.
답변
각도 6 확산 연산자 와 연결 이 작동하지 않습니다. 쉽게 해결할 수 있습니다.
result.push(...data);
답변
ES6에서 권장하는 양식을 사용할 수도 있습니다.
data => {
this.results = [
...this.results,
data.results,
];
this._next = data.next;
},
이것은 배열을 먼저 초기화하면 작동합니다 ( public results = [];
); 그렇지 않으면 교체 ...this.results,
에 의해 ...this.results ? this.results : [],
.
도움이 되었기를 바랍니다
답변
이 시도
data => {
this.results = [...this.results, ...data.results];
this._next = data.next;
}
답변
두 개의 배열이 있다고 가정합니다. 첫 번째에는 학생 세부 정보가 있고 학생은 세부 정보를 표시합니다. 두 배열 모두 ‘studentId’라는 공통 키가 있습니다.
let studentDetails = [
{ studentId: 1, studentName: 'Sathish', gender: 'Male', age: 15 },
{ studentId: 2, studentName: 'kumar', gender: 'Male', age: 16 },
{ studentId: 3, studentName: 'Roja', gender: 'Female', age: 15 },
{studentId: 4, studentName: 'Nayanthara', gender: 'Female', age: 16},
];
let studentMark = [
{ studentId: 1, mark1: 80, mark2: 90, mark3: 100 },
{ studentId: 2, mark1: 80, mark2: 90, mark3: 100 },
{ studentId: 3, mark1: 80, mark2: 90, mark3: 100 },
{ studentId: 4, mark1: 80, mark2: 90, mark3: 100 },
];
‘studentId’키를 기반으로 두 배열을 병합하고 싶습니다. 두 배열을 병합하는 함수를 만들었습니다.
const mergeById = (array1, array2) =>
array1.map(itm => ({
...array2.find((item) => (item.studentId === itm.studentId) && item),
...itm
}));
다음은 최종 결과를 얻는 코드입니다.
let result = mergeById(studentDetails, studentMark
);
[
{"studentId":1,"mark1":80,"mark2":90,"mark3":100,"studentName":"Sathish","gender":"Male","age":15},{"studentId":2,"mark1":80,"mark2":90,"mark3":100,"studentName":"kumar","gender":"Male","age":16},{"studentId":3,"mark1":80,"mark2":90,"mark3":100,"studentName":"Roja","gender":"Female","age":15},{"studentId":4,"mark1":80,"mark2":90,"mark3":100,"studentName":"Nayanthara","gender":"Female","age":16}
]