Показать сообщение отдельно
  #6 (permalink)  
Старый 13.11.2013, 00:44
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

var s = 'Я люблю Москву всеми частями своего тела';
var arr = s.split(/\s+/g),lng = arr.length;
var n = Math.floor(Math.random() *3+1);//число заменяемых пробелов;max = 3
var arr2=[];

function rand(n) {
  if(n<=0)return;
  var a= Math.floor(Math.random() *(lng-1));
  if(('='+arr2.join('=')+'=').indexOf('='+a+'=')!=-1){rand(n);return} //если номер пробела есть уже  в списке выбор повторяем;
  arr2.push(a);
  --n;
  rand(n);
} rand(n);

var s2='', tstStr = '='+arr2.join('=')+'=';
for (var i=0; i<lng; i++){
 var d = ' '; if(tstStr.indexOf('='+(i-1)+'=')!=-1) d = '<a href="#"> cool </a>';
 s2+=d + arr[i];
}
alert(['arr2='+arr2,'\n'+s2])


Хотя можно упростить, опустив пункт задания числа заменяемых пробелов;(их число будет меняться за счет случайного совпадений индексов)
var s = 'Я люблю Москву всеми частями своего тела';
var arr = s.split(/\s+/g),lng = arr.length;

var arr2=[];

function rand(n) {
  if(n<=0)return;
  var a= Math.floor(Math.random() *(lng-1));
  arr2.push(a);
  --n;
  rand(n);
} rand(3); //max = 3

var s2='', tstStr = '='+arr2.join('=')+'=';
for (var i=0; i<lng; i++){
 var d = ' '; if(tstStr.indexOf('='+(i-1)+'=')!=-1)d = '<a href="#"> cool </a>';
 s2+=d + arr[i];
}
alert(['arr2='+arr2,'\n'+s2])

Последний раз редактировалось Deff, 13.11.2013 в 04:29.
Ответить с цитированием