I didn’t spend time looking through any of the JS utilities to do this so if there is one publicly available I’d suggest using it since I just coded this and haven’t run it through be 2 screen refreshes. 🙂
bq. function trimByWord(sentence) {
var result = sentence;
var resultArray = result.split(” “);
if(resultArray.length > 10){
resultArray = resultArray.slice(0, 10);
result = resultArray.join(” “) + “…”;
}
return result;
}
I guess we can step through the code.
#) Set _result_ to the _sentence_ value passed in so if there aren’t more than 10 words it will just return the same string.
#) Split _result_ by spaces so a sentence like “I love to blog but sometimes get to busy. I’ll try harder.” will result in an array of 12 strings.
#) If _resultArray_ has more than 10 (put whatever number you want here) words, go to the next step. If not, skip to the last step.
#) Slice the array to only grab the first 10 (again, whatever number you want here) elements (the words) in the array.
#) _join()_ the array with a space so the _resultArray_ elements are now a string and add the ellipsis to the end.
#) Return the _result_.
That’s it. There are a few upgrades I’m going to make in a few minutes. Basically make sure the last character isn’t a period (if so, ignore the “…”) and maybe a couple others.
Hope this helps.