Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с массивом (https://javascript.ru/forum/misc/9584-problema-s-massivom.html)

Kiev 25.05.2010 23:27

Проблема с массивом
 
Здравствуйте! У меня проблема со скриптом:

var names=new Array();var newNames=new Array();
function lolName(){

 names=prompt("Имя ","h");

   for(var i=0;i<newNames.length+names.length;i++)
   {
    
	if(newNames[i]==names[i])
	 {names.length=0;}
	else{newNames.push(names[i]);names.length=0;}
	
   }
     alert(newNames);
	 
	
}

<p onclick="lolName()">demo</p>

Мне нужно, чтобы если в массив( уже содержит это значение) сохраняется какое-то значение переменной, которое уже есть в этом массиве, оно не сохранялось.
В общем говоря: newNames имеет элементы ["g","h"] если ввожу "h" или "g" они не добавляются в массив так, как они там уже существуют. У меня неправильно работает скрипт, помогите :cray:

e1f 26.05.2010 03:17

Кошмар! Ахтунг! Голактеко опасносте!
А гуглить не пробовали, перед тем, как постить свои излияния?

Kiev 26.05.2010 03:32

e1f,
Цитата:

Сообщение от e1f
А гуглить не пробовали, перед тем, как постить свои излияния?

Ничего не нашёл подходящего

Kolyaj 26.05.2010 07:54

Цитата:

Сообщение от Kiev
names=prompt("Имя ","h");

names после этого стал строкой.

Kiev 26.05.2010 12:21

Kolyaj,
То есть не массивом, содержащим строковые элементы, а обычной строкой? Я его переопределил так сказать?

Kolyaj 26.05.2010 12:28

А с чего он должен стать массивом, если функция prompt возвращает строку?

Kiev 26.05.2010 12:31

Kolyaj,
Спасибо, как я мог не заметить этого((( Нету опыта

Kiev 26.05.2010 18:42

Хотя если я заменю
names.push(prompt("Имя ","h"));

Тоже не пашет, тут нужно какой-то алгоритм разработать, может кто-то знает как сделать?

Gvozd 26.05.2010 18:50

вы такую глупость написали в первом посте, что лично мне даже впадлу объяснять по пунктам, что не так.
совет один:
сесть и начать с нуля учить язык.любой

Kiev 26.05.2010 19:08

Gvozd,
Что там глупого? Есть массив, длина которого заранее не известна, он хранит имена, есть другой массив, в который вводится имя(пока одно имя, когда выйдет проверка хотя бы на 1 имя будет несколько имён вводиться ). Это мне надо для одного задания, я просто не могу сделать проверку на совпадение имён, по этому вывел всё в отдельную фун-ю и имя будет не просто вводиться через промпт.

JsLoveR 26.05.2010 23:36

Kiev,
Вот:
var withoutSimilarNames=new Array(),names=new Array(),flag=false,count=0;
function clearingTheNames()
{
   names.push(prompt("Имя","g"));
   count=(withoutSimilarNames.length+names.length);
	
	for(var i=0;i<count;i++)
	 { 
	  
		for(var j=0;j<count;j++)
		{
		   if(names[i]==withoutSimilarNames[j])
		   {
		      alert("Нашёлся одинаковый, не добавляем!!!");
		      flag=false;
			  break;
		   }
		   else if(names[i]!=withoutSimilarNames[j]){flag=true;}
		}
		if(flag==true){alert("Добавляем!!!");withoutSimilarNames.push(names[i]);}
	}
	
	names=new Array();
    alert(withoutSimilarNames);
}

<a href="#" onclick="clearingTheNames()">Добавить новое имя</a>

Есть прорехи, доделаете сами, можете вообще модифицировать скрипт как хотите.

Kiev 27.05.2010 00:11

Ох, спасибо Вам!!!!

Gvozd 27.05.2010 00:33

Kiev,
вот вы спрашиваете что у вас за ошибки
у вас весь код - ошибки
обратите внимание хотя бы на два цикла вместо одного в правильном решении

Kiev 27.05.2010 00:44

Gvozd,
Цитата:

Сообщение от Gvozd
обратите внимание хотя бы на два цикла вместо одного

та да, понимаю теперь.
Цитата:

Сообщение от Gvozd
вот вы спрашиваете что у вас за ошибки
у вас весь код - ошибки

буду усерднее работать.


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