Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Задача по JavaScript (https://javascript.ru/forum/misc/30820-zadacha-po-javascript.html)

lord2kim 17.08.2012 21:45

wawandas, последний цикл лишний
var arr = [1,2,3,4,1,2,6,7];
 
var tmp_arr = new Array();
 
var view = '';
       
    for (i = 0; i < arr.length; i++)
    {
        if (tmp_arr.indexOf(arr[i]) == "-1")
        {
            tmp_arr.push(arr[i]);
        }
    }
       
/*for(var i in tmp_arr)
{
    view += tmp_arr[i] + ',';
}
 
alert(view)*/
alert(tmp_arr);

Deff 17.08.2012 22:12

var newStr = '';
 var arr = [111,1,111,2,33,3,44,5,33,44,6,77,77];
 var Obj={};

 for(i in arr){
   Obj[arr[i]]=true;
 }
 var arrOut=[]
  for(key in Obj){
   arrOut.push(key);
 }
alert(arrOut)

daima 19.08.2012 11:21

Цитата:

Сообщение от Deff (Сообщение 198379)
for(i in arr){
Obj[arr[i]]=true;
}

а как это расшифровывается? не догоню смысл

Deff 19.08.2012 11:41

daima,
Присваиваем в объекте названиям свойств(или хешей) = значения элементов массива, если имена свойств совпадают - то считаецо: что присваиваецо значение true одному и тому же свойству- а колво свойств объекта будет равно неповторяющимся именам(бывшим значениям массива)

wawandas 19.08.2012 13:10

Люди добыре! помогите понять почему...

Задача вставить элемент span с текстом "Price:" перед элементом span c классом "inner_block".

код...

<div class = "inner_block">
		<span class="item_title">Boots</span>
		<span>$150.00</span>
		<a href="#">Add To Backet</a>
		<span>Price:</span>
</div>


var elem = document.querySelector("div.inner_block");
		var elemSpan = document.querySelector("span.item_title");
		var lastElem = elem.lastElementChild;

			function insertAfter(parent, node, referenceNode) 
				{
					parent.insertBefore(node, referenceNode.nextSibling);
				}
	    insertAfter(elem, lastElem, elemSpan);


js вставляет туда куда нужно, но пропадает пробел (((

до:

Boots $150.00 Add To Backet Price:

после:

BootsPrice: $150.00 Add To Backet

почему так может получаться?

p.s. после выполнения скрипта в firebag видно что тег span стоит как задуманно

Deff 19.08.2012 13:41

<span> Price:</span>

<div class = "inner_block">
		<span class="item_title">Boots</span>
		<span>$150.00</span>
		<a href="#">Add To Backet</a>
		<span> Price:</span>
</div>


<script type="text/javascript">
var elem = document.querySelector("div.inner_block");
		var elemSpan = document.querySelector("span.item_title");
		var lastElem = elem.lastElementChild;

			function insertAfter(parent, node, referenceNode) 
				{
					parent.insertBefore(node, referenceNode.nextSibling);
				}
	    insertAfter(elem, lastElem, elemSpan);

</script>

wawandas 19.08.2012 13:51

да, но эт не выход если у меня таких span>price еще 3 штуки ((

всё же хотелось бы понять почему так происходит :(

wawandas 20.08.2012 12:02

Господа,

как реализовать алгоритм который будет проверять является ли строка ротацией другой строки, пример: 'panama' являеться ротацией 'amapan'

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

nerv_ 20.08.2012 12:21

Цитата:

Сообщение от wawandas
я так понимаю что здесь нужно использовать регулярки

не обязательно. Погуглите нечеткий поиск, метрики "сходства" строк

Deff 20.08.2012 12:40

<script type="text/javascript">
str1='panama' 
str2='amapan'

function TstСircular_movement(S1,S2) {
 var lenS1=S1.length,lenS2=S2.length;
 if(lenS1==lenS2){
   var s1=S1.split('');
   for(i in s1){
     alert(s1.join(''))
     if(S2==s1.join(''))return i; 
     s1.unshift(s1.pop())
   }
 }
 return -1;
} alert(TstСircular_movement(str1,str2)) //Возвращаем сдвиг или -1
</script>


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