He revisado las preguntas de JavaScript sobre este tema, esta pregunta es específicamente sobre Angular2 con TypeScript.
Lo que estoy tratando de hacer es concatenar los objetos json en una matriz.
Mi código se parece a esto,
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);
}
);
}
¿Cómo puedo concatenar data.results
a this.results
la mecanografiado y angulares?
this._slug
y this._next
se ponen en clase.
Gracias.
arrays
typescript
angular
Rivadiz
fuente
fuente
El operador de propagación es un poco genial.
this.results = [ ...this.results, ...data.results];
Puede leer sobre el operador de propagación aquí.
fuente
Con operador de propagación angular 6 y concat no funciona. Puedes resolverlo fácilmente:
fuente
También puede utilizar el formulario recomendado por ES6:
data => { this.results = [ ...this.results, data.results, ]; this._next = data.next; },
Esto funciona si inicializa su matriz primero (
public results = [];
); de lo contrario, reemplace...this.results,
por...this.results ? this.results : [],
.Espero que esto ayude
fuente
prueba esto
data => { this.results = [...this.results, ...data.results]; this._next = data.next; }
fuente
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} ]
fuente