Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Bывести без повторов: (https://javascript.ru/forum/misc/34414-byvesti-bez-povtorov.html)

dima*** 04.01.2013 13:30

Bывести без повторов:
 
Не получается.Нужно вывести без повторов:

<!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>
<script>
var a=new Array('dsda','fjjd','fhhd','dsda'),povtor=true;
for(i=0;i<a.length;++i){

}
	while(povtor){
		for(i=0;i<a.length;++i){
			for(j=0;j<a[i].length;++j){
				if(a[j]==a[i]){
					a[j]=a;
				}
					else{povtor=false}
					}}}
			alert(a);
			</script>

</body>
</html>

Deff 04.01.2013 13:41

var arr1=new Array('dsda','fjjd','fhhd','dsda','fhhd','dsda');
var obj ={};
 for(var i in arr1){
   obj[arr1[i]]=true;
 }
 arr1=[];
 for(var key in obj){
   arr1.push(key);
 }

alert(arr1)

dima*** 04.01.2013 13:45

Требуется вывести массив без повторов.
Нужно вывести новый массив не используя объект

Deff 04.01.2013 14:01

var arr1=new Array('dsda','fjjd','fhhd','dsda','fhhd','dsda');
var arr2=[];
for(var i in arr1){
   if(arr2.indexOf(arr1[i])==-1)arr2.push(arr1[i]);
}
alert(arr2)

Hekumok 04.01.2013 14:05

var a = ['dsda', 'fjjd', 'fhhd', 'dsda'], arr = [], flag = true ;
arr.push(a[0]) ;
for(var i=1; i<a.length; i++) {
for(var j=0; j<arr.length; j++) {
if(a[i]==arr[j]) {
flag = false ;
break ;
} ;
} ;
if(flag) arr.push(a[i]) ;
flag = true ;
} ;
alert(arr) ;

dima*** 04.01.2013 14:06

Deff,cпасибо.
А мой код, можно ещё подкорректировать?

dima*** 04.01.2013 14:06

Hekumok,спасибо.То,что нужно!

Deff 04.01.2013 14:09

Для включая старые ИЕ
var arr1=new Array('dsda','fjjd','fhhd','dsda','fhhd','dsda');
var arr2=[];
for(var i in arr1){
   var key=true;
   for(var j in arr2){
      if(arr2[j]==arr1[i]){key=false;break}
   }
   if(key)arr2.push(arr1[i]);
}
alert(arr2)

рони 04.01.2013 14:11

dima***,
Вариант ...
var a = new Array('dsda','fjjd','fhhd','dsda'),len = a.length,l;
while (len--) {l=len;
while (l--) {
if(a[len]==a[l]) a.splice(len,1)
}}
alert(a);

dmitriymar 04.01.2013 15:42

Цитата:

Сообщение от Deff
for(var j in arr2){

не смущает, что так массивы перебирать нельзя?
Цитата:

Длина массива определяется свойством .length. У хэшей такого нет.
....
В хэшах просто перебираются все ключи. А зная ключи, можно узнать и значения. В данном случае ничего сложного нет. Однако стоит понимать, что если применить данный способ не к хэшу, а к массиву, мы можем получить несколько больше, чем ожидаем.


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