Reputation: 305
So, I have this simple dataset:
LIVE DEMO: http://jsbin.com/ramuwow/edit?js,console
var members = [{
"id": "1",
"firstName": "JOHN",
"lastName": "MARTY"
}, {
"id": "2",
"firstName": "JONES",
"lastName": "SMITH"
}, {
"id": "3",
"firstName": "MARY",
"lastName": "DOE"
}, {
"id": "4",
"firstName": "MARGARET",
"lastName": "KANE"
}];
and I have one piece of string from input to search for these objects.
I can do from name and last name to id. But I cannot do first AND last name.
Here is what i have so far:
var members = [{"id":"1","firstName":"JOHN","lastName":"MARTY"},{"id":"2","firstName":"JONES","lastName":"SMITH"},{"id":"3","firstName":"MARY","lastName":"DOE"},{"id":"4","firstName":"MARGARET","lastName":"KANE"}];
var filteredNames = members.filter(function(n){
var query = "MARY DO";
var splitUp = query.split(" ");
console.log(splitUp);
return n.firstName.indexOf(query) > -1 ? n : false ||
n.lastName.indexOf(query) > -1 ? n : false ||
n.id.indexOf(query) > -1 ? n : false ||
n.firstName.indexOf(splitUp[0]) > -1 && n.lastName.indexOf(splitUp[1]);
});
console.log(filteredNames);
and that returns:
["MARY", "DO"]
["MARY", "DO"]
["MARY", "DO"]
["MARY", "DO"]
[]
What am I Doing wrong? The object of MARY DOE
should appear.
Upvotes: 0
Views: 52
Reputation: 2280
Problem : You are missing comparison to -1
at the last.
Solution :
Compare the last to -1
and you will get your object as :
var members = [{"id":"1","firstName":"JOHN","lastName":"MARTY"},{"id":"2","firstName":"JONES","lastName":"SMITH"},{"id":"3","firstName":"MARY","lastName":"DOE"},{"id":"4","firstName":"MARGARET","lastName":"KANE"}];
var filteredNames = members.filter(function(n){
var query = "MARY DO";
var splitUp = query.split(" ");
console.log(splitUp);
return n.firstName.indexOf(query) > -1 ? n : false ||
n.lastName.indexOf(query) > -1 ? n : false ||
n.id.indexOf(query) > -1 ? n : false ||
n.firstName.indexOf(splitUp[0]) > -1 && n.lastName.indexOf(splitUp[1]) > -1;
});
console.log(filteredNames);
OUTPUT :
["MARY", "DO"]
["MARY", "DO"]
["MARY", "DO"]
["MARY", "DO"]
[[object Object] {
firstName: "MARY",
id: "3",
lastName: "DOE"
}]
@Credit Goes To @Pointy
JSBin Link : http://jsbin.com/geziwetudi/edit?js,console
Upvotes: 1