Reputation: 690
I have array like this:
var notes = ["user1,date:13/2/2008,note:blablabla", "user1,date:15/2/2008,note:blablabla", "user1,date:17/2/2008,note:blablabla", "user1,date:13/3/2008,note:blablabla"];
And I have
var search_date="17/2/2008";
I want to find last occurence of note and user for that note. Anyone knows how? Thanks in advance for your reply.
Upvotes: 1
Views: 130
Reputation: 4919
var notes = ["user1,date:13/2/2008,note:blablabla", "user1,date:15/2/2008,note:blablabla", "user1,date:17/2/2008,note:blablabla", "user1,date:13/3/2008,note:blablabla"];
var search_date="17/2/2008";
var user, note;
$.each(notes, function(i) {
var search = new RegExp('\\b' + search_date + '\\b','i');
// if search term is found
if (notes[i].match(search)) {
var arr = notes[i].split(',');
user = arr[0];
note = arr[2].substr(5);
}
}); // end loop
console.log(user);
console.log(note);
example here: http://jsfiddle.net/Misiu/Wn7Rw/
Upvotes: 0
Reputation: 1234
For the last occurrence and if performance matters:
var notes = ['user1,date:13/2/2008,note:blablabla', 'user1,date:15/2/2008,note:blablabla', 'user1,date:17/2/2008,note:blablabla', 'user1,date:13/3/2008,note:blablabla'],
search = '17/2/2008',
notesLength = notes.length - 1,
counter,
highestIndex = null;
for (counter = notesLength; counter >= 0; counter--) {
if (notes[counter].indexOf(search) !== -1) {
highestIndex = counter;
break;
}
}
// do something with notes[highestIndex]
Upvotes: 0
Reputation: 14014
var match = JSON.stringify(notes).match("\"([^,]*),date\:"+search_date+",note\:([^,]*)\"");
alert(match[1]);
alert(match[2]);
works ;-)
Upvotes: 1
Reputation:
Something like this:
var notes = ["user1,date:13/2/2008,note:blablabla", "user1,date:15/2/2008,note:blablabla", "user1,date:17/2/2008,note:blablabla", "user1,date:13/3/2008,note:blablabla"];
var search_date="17/2/2008";
var res = [];
for(var i = 0; i < notes.length; i++) {
var note = notes[i];
if(note.indexOf(search_date) !== -1) {
res.push(note.substring(note.indexOf('note:') + 1), note.length);
}
}
var noteYouWanted = res[res.length - 1];
Upvotes: 0
Reputation: 1430
for (var i = 0; i < notes; i++) {
if (notes[i].indexOf(search_date) != -1) {
// notes [i] contain your date
}
}
Upvotes: 1
Reputation: 6674
Try this:
var highestIndex = 0;
for (var i = 0; i < notes.length; i++){
if (notes[i].indexOf(search_date) != -1){
highestIndex = i;
}
}
//after for loop, highestIndex contains the last index containing the search date.
Then to get the user, you can parse like this:
var user = notes[highestIndex].substring(0, notes[highestIndex].indexOf(',') - 1);
Upvotes: 1
Reputation: 2570
You can iterate the array and check the attribute
or
you can user underscore.js: http://underscorejs.org/#filter
Upvotes: 1