2017-11-11 4 views
2

in einer Komponente I meine Array filtern kann mit dem folgenden:Array.filter() in Angular 2 Komponente

// Array of product objects 
const result = products.filter(p => p.name.includes('val')); 

und dem Wert der Produkte bleibt gleich wie der erste Wert, aber gefilterten Wert speichert in result.

Aber im folgenden Code, filter() Filter Array von Strings selbst:

// Array of strings 
const result = strs.filter(s => s.includes('val')); 

Die Frage ist, wie ich Strings filtern und Ergebnis ohne Änderung der strs selbst zurückkehren kann?

Hinweis: Ich versuchte mit array.filter(function() { return res; });, aber keine Änderung vorgenommen.

+0

Diese 'strs.filter (s => s.includes ('val'));' ändert nicht 'strs'. Die Filterfunktion gibt ein neues Array mit den Elementen zurück, für die das Prädikat, das Sie in der Filterfunktion übergeben haben, wahr ist. – Christos

+0

Ihr Code ist in Ordnung, es könnte Tippfehler geben – Niladri

Antwort

1

Es gibt die gefilterten zurück und ändert nicht das tatsächliche Array. Sie tun etwas falsch

const strs = ['valval', 'bal', 'gal', 'dalval']; 
 
const result = strs.filter(s => s.includes('val')); 
 

 
console.log(strs); 
 
console.log(result);

+0

Ja, Sie haben Recht, das Problem lag an einem Objekt, das ein Array eines anderen Objekts enthält. Ich änderte meine Meinung über die Art, wie ich filtere und es funktioniert ordnungsgemäß. Vielen Dank – Hooman