Przeszedłem przez pytania JavaScript na ten temat, to pytanie dotyczy w szczególności Angular2 z TypeScript.
Próbuję połączyć obiekty json z tablicą.
Mój kod wygląda mniej więcej tak,
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);
}
);
}
Jak mogę łączyć data.results
się this.results
z maszynopisem i kątowym?
this._slug
i this._next
są nastawione na klasę.
dzięki.
arrays
typescript
angular
Rivadiz
źródło
źródło
Operatora rozpiętość jest trochę ochłodzenia.
this.results = [ ...this.results, ...data.results];
Możesz przeczytać o operatorze spreadu tutaj.
źródło
Z operatorem kątowym 6 i concat nie działają. Możesz to łatwo rozwiązać:
źródło
Możesz także skorzystać z formularza rekomendowanego przez ES6:
data => { this.results = [ ...this.results, data.results, ]; this._next = data.next; },
Działa to, jeśli najpierw zainicjujesz swoją tablicę (
public results = [];
); w przeciwnym razie zamień...this.results,
na...this.results ? this.results : [],
.Mam nadzieję że to pomoże
źródło
Spróbuj tego
data => { this.results = [...this.results, ...data.results]; this._next = data.next; }
źródło
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 }, ];
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} ]
źródło