Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Создание уникальных элементов (https://javascript.ru/forum/misc/42371-sozdanie-unikalnykh-ehlementov.html)

dima*** 23.10.2013 20:06

Создание уникальных элементов
 
Не получается создать уникальные элементы

Должно получиться:
«Луч» пос.Демино
«Факел» пос.Цимлянский
ФК «Татарка Верхняя»
ФК «Верхнерусское»
«Нива» с.Казинка
«ЗАО Верхнедубовское»
ФК «Надежда»
ФК «Михайловск-ДЮСШ»
ФК «Сенгилеевское»
ФК «Пелагиада»
ФК «Татарка Нижняя»
выходной



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Документ без названия</title>
</head>

<body>

 <p style='display:none'>
19 октября - 20 тур 

 «Луч» пос.Демино - «Факел» пос.Цимлянский
 ФК «Татарка Верхняя» - ФК «Верхнерусское»
 «Нива» с.Казинка - «ЗАО Верхнедубовское»
 ФК «Надежда» - ФК «Михайловск-ДЮСШ»
 ФК «Сенгилеевское» - ФК «Пелагиада»
 ФК «Татарка Нижняя» - выходной   


 26 октября - 21 тур 

 ФК «Пелагиада» - ФК «Надежда»
 ФК «Михайловск-ДЮСШ» - «Нива» с.Казинка
 «ЗАО Верхнедубовское» - ФК «Татарка Верхняя»
 ФК «Верхнерусское» - «Луч» пос.Демино
 «Факел» пос.Цимлянский - ФК «Татарка Нижняя»
 ФК «Сенгилеевское» - выходной   


2 ноября - 22 тур 

 ФК «Татарка Нижняя» - ФК «Верхнерусское»
 «Луч» пос.Демино - «ЗАО Верхнедубовское»
 ФК «Татарка Верхняя» - ФК «Михайловск-ДЮСШ»
 «Нива» с.Казинка - ФК «Пелагиада»
 ФК «Надежда» - ФК «Сенгилеевское»
 «Факел» пос.Цимлянский - выходной   

</p>


<script  type="text/javascript">

function uniq(arr){
var obj={};
for(var i=0;i<arr.length;i++){
str=arr[i];
obj[str]=true;
}
return Object.keys(obj)
}//[COLOR="blue"]Функция для создания уникальных элементов[/COLOR]


a=document.getElementsByTagName('p')[0].innerHTML;
a = a.replace(/^(.+)\s+-\s+(.+)$/img,'$1,$2');
b=a.split(/\n/ig);
for(var i=0;i<b.length;i++){

b[i]=b[i].split(',');
for(var j=0;j<b[i].length;j++){
//document.write(b[i][j]+'<br>')[COLOR="blue"]Создание массива[/COLOR]
//console.log(b[i][j]);
//}}

document.write(uniq(b[i][j]+'<br>'));//[COLOR="blue"]Создание уникальных элементов[/COLOR]

//console.log(uniq(b[i][j]+'<br>'));
}}

</script>
</body>
</html>

Яростный Меч 23.10.2013 20:34

http://jsfiddle.net/GZs2Q/

var text = document.getElementsByTagName('p')[0].innerHTML;
var re = /^\s*(.*\S)\s+-\s+(.*\S)\s*$/gm, 
    re2 = /^\d+\s+[a-z\u0430-\u044F]+$/i;
var m, map = {}, arr = [];
while(m = re.exec(text)) {
    for(var i=1; i<=2; ++i) {
        if (!map[m[i]] && !re2.test(m[i])) {
            map[m[i]] = 1;
            arr.push(m[i]);
        }
    }
}
alert(arr.join('\n'));

Deff 24.10.2013 01:22

<p style='display:none'>
19 октября - 20 тур 

 «Луч» пос.Демино - «Факел» пос.Цимлянский
 ФК «Татарка Верхняя» - ФК «Верхнерусское»
 «Нива» с.Казинка - «ЗАО Верхнедубовское»
 ФК «Надежда» - ФК «Михайловск-ДЮСШ»
 ФК «Сенгилеевское» - ФК «Пелагиада»
 ФК «Татарка Нижняя» - выходной   


 26 октября - 21 тур 

 ФК «Пелагиада» - ФК «Надежда»
 ФК «Михайловск-ДЮСШ» - «Нива» с.Казинка
 «ЗАО Верхнедубовское» - ФК «Татарка Верхняя»
 ФК «Верхнерусское» - «Луч» пос.Демино
 «Факел» пос.Цимлянский - ФК «Татарка Нижняя»
 ФК «Сенгилеевское» - выходной   


2 ноября - 22 тур 

 ФК «Татарка Нижняя» - ФК «Верхнерусское»
 «Луч» пос.Демино - «ЗАО Верхнедубовское»
 ФК «Татарка Верхняя» - ФК «Михайловск-ДЮСШ»
 «Нива» с.Казинка - ФК «Пелагиада»
 ФК «Надежда» - ФК «Сенгилеевское»
 «Факел» пос.Цимлянский - выходной   

</p>


<script  type="text/javascript">
a=document.getElementsByTagName('p')[0].innerHTML;
b = a.replace(/^.{0,23}$\n/gim,'')
.replace(/^\s*(.+)\s+-\s+(.+)\s*$/img,'a["$1"]=1;a["$2"]=1;');

a = {};eval(b);var b=[];
for(var i in a)b.push(i);

alert(b.join(',\n'));
</script>

dima*** 24.10.2013 08:54

Спасибо.

А можно через Object.keys(obj)?
http://learn.javascript.ru/array-methods

Deff 24.10.2013 14:41

Цитата:

Сообщение от dima***
А можно через Object.keys(obj)?

Цитата:

a = {};eval(b);var b=[];
40 for(var i in a)b.push(i);
41
42 alert(b.join(',\n'));
замените в этих строках
a=> obj
i => key

dima*** 24.10.2013 18:56

спасибо


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