Вторая часть вашего вопроса закончилась использованием довольно много кода
это было бы проще, но было бы интереснее создать метод для поиска в любой строке текста компонентов любого слова, которое вы ее кормите.
function wordsfrom(s1, str){
var i, tem, temp, s1= s1.toLowerCase(),
rx= RegExp('\\b(['+s1+']{3,'+s1.length+'})\\b','gi'),
M= str.match(rx) || [];
return M.testEach(function(itm){
tem= itm.toLowerCase().split('');
temp= s1.split('');
while(tem.length){
ax= temp.indexAt(tem.pop());
if(ax== -1) return false;
temp.splice(ax, 1);
}
return true;
});
}
var s1= 'cut pat, rope, computers, putt, compote, come, put, mop, dog, comute';
alert(wordsfrom('computer', s1));
/* returned value: (Array)
cut,rope,come,put,mop,comute
*/
При этом используется пара общих методов Array, полезных для IE и работающих в других.
Замените тем, что вы будете использовать для метода indexOf и фильтра.
Array.prototype.testEach= function(fun){
var A= [], i= 0, itm, L= this.length;
if(typeof fun== "function"){
while(i < L){
itm= this[i];
if(fun(itm, i++)) A[A.length]= itm;
}
}
return A;
}
Array.prototype.indexAt= function(what){
var L= this.length;
while(L) if(this[--L]=== what) return L;
return -1;
}