2017-11-19 2 views
1

Hallo Leute, ich versuche, in einem neuen Array die Leute mit den Calderon Namen im Array Namen zu bekommen.JavaScript Suchnamen in Array mit Indexof

Ist es möglich?

people = [ 
    {name: 'Felipe Calderon', year: 2012}, 
    {name: 'Rocio Calderon Martinez', year: 2012}, 
    {name: 'Laura Martinez Calderon', year: 2012}, 
    {name: 'Marcos Alberto Gonzales Calderon', year: 2012}, 
    {name: 'Brenda Calderon Ibañez', year: 2012}, 
]; 

Wenn ich indexOf auf eine Zeichenkette, die es perfekt funktioniert, aber nicht Array, so scheint es nur id der Name beginnt mit Calderon aber bot enthält das Wort zu arbeiten.

Antwort

3

filtern ein Array in ein anderes Array, müssen Sie den Filter verwenden() Funktion:

let calderons = people.filter(person => person.name.indexOf('Calderon') >= 0); 

Oder, wenn Sie nicht Lambda-Funktionen verwenden können:

var calderons = people.filter(function(person) { 
    return person.name.indexOf('Calderon') >= 0; 
}); 
+2

oder 'includes' mit' filter'. –

+1

Wenn sie keine Pfeilfunktionen verwenden können, können sie wahrscheinlich auch nicht "let" verwenden. –

+0

in der Tat :) bearbeitet .. – xs0

1

Sie verwenden können array#filter, um die Namen zu finden, die darin Calderon enthalten. Verwenden Sie string#includes, um innerhalb des name-Werts Calderon zu suchen.

const people = [ {name: 'Felipe Calderon', year: 2012}, {name: 'Rocio Calderon Martinez', year: 2012}, {name: 'Laura Martinez Calderon', year: 2012}, {name: 'Marcos Alberto Gonzales Calderon', year: 2012}, {name: 'Brenda Calderon Ibañez', year: 2012}]; 
 
const result = people.filter(({name}) => name.includes('Calderon')); 
 
console.log(result);