I was beginning to write a bubble sort for this when I thought maybe there is a way to use a function with array.sort() that does the job ?
Here is a (hopefully) clear example of what I have to sort : (file names list)
var array = ['impression_page_1_12_juin','impression_page_1_13_juin','impression_page_2_12_juin','impression_page_2_13_juin']
As you can see there are 2 'page1' on 2 different dates, only characters 19 and 20 in each string are different. I'd like to sort on those 2 characters.
Can Javascript do that straightforward or should I return to my substrings and bubble sort method ?
I was beginning to write a bubble sort for this when I thought maybe there is a way to use a function with array.sort() that does the job ?
Here is a (hopefully) clear example of what I have to sort : (file names list)
var array = ['impression_page_1_12_juin','impression_page_1_13_juin','impression_page_2_12_juin','impression_page_2_13_juin']
As you can see there are 2 'page1' on 2 different dates, only characters 19 and 20 in each string are different. I'd like to sort on those 2 characters.
Can Javascript do that straightforward or should I return to my substrings and bubble sort method ?
Share Improve this question asked Jun 13, 2012 at 14:15 Serge insasSerge insas 46.8k7 gold badges112 silver badges135 bronze badges 5- characters 17, 19, and 20 are different in each string. – Gordon Bell Commented Jun 13, 2012 at 14:18
- You're right... but I wanted to group the 'date' part in the list... page numbers are already sorted. Thanks for nailing it ;-) – Serge insas Commented Jun 13, 2012 at 14:49
- this isn't a google-apps-script question ... – Edo Commented Jun 13, 2012 at 15:02
- @Edo, sorry, my question was tagged javascript and GAS, I don't think this is really off topic, do you ? – Serge insas Commented Jun 13, 2012 at 15:08
- it's not a big deal but I don't get how this question can be related to GAS ... – Edo Commented Jun 13, 2012 at 15:15
2 Answers
Reset to default 14Use the sort
method with a function for the parison:
array.sort(function(x,y){
var xp = x.substr(18, 2);
var yp = y.substr(18, 2);
return xp == yp ? 0 : xp < yp ? -1 : 1;
});
Yes, you can pass a function to array.sort that pares the two strings according to whatever criteria you're interested in. See How to sort array in javascript?
You will have to be careful with strings vs. numbers: '1_12' < '1_2'
is True
, for instance. If you need to pare them as numbers, you could split the strings, do parseInt on each part, and implement a pairwise parison.