Assuming an array call `allMessages' that contains the set of all your messages objects to search:
var messagesSentByNames = allMessages.reduce(function(relevantMsgs,message) { for(var i = 0; i < deelnemers.length; i++) { if(message.name == deelnemers[i]) { relevantMsgs.push(message); break; } }; return relevantMsgs; }, []);
If you want something reusable:
/** * names: array of Strings or String representing name(s) to search * messagesToSearch: array of message objects to find matches in */ function getMessagesSentBy(names, messagesToSearch) { //Can pass in a single name as string if(typeof names === 'string') { names = [names]; } return messagesToSearch.reduce(function(relevantMsgs,message) { for(var i = 0; i < names.length; i++) { if(message.name === names[i]) { relevantMsgs.push(message); break; } }; return relevantMsgs; }, []); }
Example
var allMessages = [ {date: "12-12-12",time: "12:34:10",name: "Wence", message: "A"}, {date: "12-12-12",time: "12:34:10",name: "Bob", message: "B"}, {date: "12-12-12",time: "12:34:10",name: "Wence", message: "C"}, {date: "12-12-12",time: "12:34:10",name: "Sanderson", message: "D"}]; var users = ['Wence','Bob']; var wenceMessages = getMessagesSentBy(users, allMessages); console.log(wenceMessages);
Output:
[{date: "12-12-12",time: "12:34:10",name: "Wence", message: "A"}, {date: "12-12-12",time: "12:34:10",name: "Bob", message: "B"}, {date: "12-12-12",time: "12:34:10",name: "Wence", message: "C"}]
messages
as a single object that contains a single message for one particular person. Do you have an array of these somewhere that cover all the messages from all the people?messages
is a SINGLE message. You show no data structure that has multiple messages in it so we're not sure what data you want us to search for just the "John Doe" messages. The one answer you have so far made up such a data structure. I figured you should show us what you data structure is before I offer code.