Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Написал генератор тегов не могу найти ошибку (https://javascript.ru/forum/misc/43904-napisal-generator-tegov-ne-mogu-najjti-oshibku.html)

finestra 28.12.2013 23:46

как насчет этого
var coefficient = function(word1, word2) {
	word1 = word1.toLowerCase();
	word2 = word2.toLowerCase();
	var r = new RegExp(word1);
	
	if(r.test(word2)) {
		return  Math.round((word1.length / word2.length)*10)/10;
	} else {
		return 0;
	}
};
var coeff1 = coefficient("keyword", "keywords"), // 0.9
    coeff2 = coefficient("keyFord", "keywords"); // 0


coeff2 должен быть 0?

MrBoriska 30.12.2013 21:46

Желательно доработать тот код, т.к. я уже из того плагин сделал и куча всего на него завязал.

Тоесть код вот такой теперь.

function gen(str,tabu,len,repeat,tags,tabuhide) { 
     var str, // Получаем текст из которого нужно выделить теги
          tabu = tabuhide + tabu.val(), // Получаем слова-исключения
          len = parseInt(len.val()), // Минимальная длинна тега
	      repeat = parseInt(repeat.val()), // Минимальное количество его повторений
	      tags, output = '';

     var  tabu = tabu.split(/\s*,\s*/), obj_tabu = {};
     for (var i=0; i<tabu.length; i++)  {obj_tabu[tabu[i]]=!0}; //сформировали обьект из запретных слов
     str = str.replace(/<[^>]*>/g, ' '); //выкусили теги
     str = str.replace(/[^a-zа-яё\s]/gi, ' '); //убрали небуквы
     str = str.split(/\s+/); //сформировали массив слов из строки
	 
     var obj_output = {};
     for (var i=0; i<str.length; i++)  {
       var word = str[i];
       if(word.length >= len && !obj_tabu[word])  obj_output[word]=(obj_output[word]||0)+1; // сформировали обьект из разрешённых слов и нужной длины
	 } 
	 
     var output1 = [];
     for(var word in obj_output) if (obj_output[word] >= repeat) output1.push(word); //отобрали слова с нужным повторением 
	 for (var i=0; i<output1.length; i++) if (i<1) output += output1[i]; else output += ', ' + output1[i]; // создали строку из элементов массива через запятую
	 
     return tags.val(output);
}



В общем нужно добавить в функцию еще один аргумент, не трогая положения старых, с коэффициентом совпадения и завязать сам процесс поиска совпадений еще и на нем. Более ничего не надо. Я бы и сам сделал, но в обьектах не шарю вообще.

MrBoriska 30.12.2013 21:48

правда строку из массива лучше создать join'ом) но это не суть. :)

рони 31.12.2013 15:23

MrBoriska,
пока из вашего описания коффициента совпадения я понял что слова так, атака, тактика и стакан это 1 слово и оно повторилось 4 раза ... предлагаю решать подобные задачи методом job

MrBoriska 31.12.2013 16:03

Ладно, в любом случае, я свою задачу уже решил, а коэффициент вещь не очень то и нужная.

С наступающим! И всем спасибо!


Часовой пояс GMT +3, время: 19:06.