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

oneguy 20.08.2012 16:47

Цитата:

Сообщение от Deff (Сообщение 199105)
oneguy,
я сообразил (потому и затёр

Хорошо. Я своё затирать не буду, может ещё кто-то не сразу догадается.

Deff 20.08.2012 16:55

Цитата:

Сообщение от oneguy
Ещё такое решение:

Соль сей штуки - достаточно практичная - к примеру для ротации объекта в слайдере (пусть буква будет хеш некого обекта, ессено буквы/цыфры - не дублируются

nerv_ 20.08.2012 17:02

oneguy, ты еще, наверно, в школе на пятерки по математике учился, да? :dance:

Цитата:

Сообщение от Deff
Соль сей штуки - достаточно практичная - к примеру для ротации объекта в слайдере (пусть буква будет хеш некого обекта, ессено буквы/цыфры - не дублируются

шо ты нам все буквами, цифрами, пример давай :no:

oneguy 20.08.2012 17:13

Цитата:

Сообщение от wawandas
Ребята! подскажите пожалуйста как извлечь уникальные значения из массива:

var array = [1,2,3,4,1,2,6,7];

заранее спасибо!

Моё решение в предположении, что в массиве хранятся числа и порядок чисел в выходном массиве не важен:
function unique(arr) {
  if (!arr.length)
    return [];
  var arr2=arr.concat().sort(function (x, y) {
    return x-y;
  });
  var result=[arr2[0]], i=0, len=arr2.length-1;
  while (i<len)
    if (arr2[i]!=arr2[++i])
      result.push(arr2[i]);
  return result;
}
//тесты
alert(unique([1,2,3,4,1,2,6,7]));

wawandas 30.08.2012 10:01

/*
Используя только арифметическую операцию +, напишите функцию, которая принимает аргумент - число, и возвращает такое же число с противоположным знаком.
Пример: Из числа 13 на выходе получить -13.
*/


function negative(n)
	{
		return n+(-n)+(-n);
	}
alert(negative(13));


n = '-' + n;
return  parseInt(n);//не канает!


какие есть еще решения? думаем, делимся, спасибо за внимание!

lord2kim 30.08.2012 10:10

Цитата:

Сообщение от wawandas (Сообщение 201593)
/*
Используя только арифметическую операцию +, напишите функцию, которая принимает аргумент - число, и возвращает такое же число с противоположным знаком.
Пример: Из числа 13 на выходе получить -13.
*/


function negative(n)
	{
		return n+(-n)+(-n);
	}
alert(negative(13));


n = '-' + n;
return  parseInt(n);//не канает!


какие есть еще решения? думаем, делимся, спасибо за внимание!

а чем вас ваш последний вариант не устроил?
var n = 13;
n = '-' + n;
alert(parseInt(n));//не канает!

wawandas 30.08.2012 10:18

Цитата:

Сообщение от lord2kim
Используя только арифметическую операцию +


меня устраивает, но оно не отвечает условию (((


+ здесь выступает как контактенация а не как арифметическая операция

Aetae 30.08.2012 10:25

var n = 13;
n = +('-' + n);
alert(n)
alert(typeof n)

Но условие убогое, ибо трактовать можно как угодно.
Например "арифметическую" - тогда этот вариант не катит так как " '-' + n " - не арифметический +, а конкатенация и " +('-' + n) " - также не арифметический +, а приведение к числу.
Или взять "только", тогда вообще никакой вариант не проходит: в первом варианте использован минус и в обоих, божеж ты мой, использованы скобочки.

lord2kim 30.08.2012 10:25

wawandas, сори не до конца дочитал...ну тогда только
var n = 13;
n = n + (-n) + (-n); //n = n + (-2 * n);
alert(parseInt(n));

хотя тут также условие не выполняется, ибо используется операция отрицания

wawandas 30.08.2012 10:30

Цитата:

Сообщение от lord2kim
ибо используется операция отрицания

в данном случае - это знак числа, или не?

lord2kim 30.08.2012 10:34

Цитата:

Сообщение от wawandas (Сообщение 201603)
в данном случае - это знак числа, или не?

:blink: операция отрицания...знак числа это когда вы в переменную занесли отрицательное число...а тут вы сами вроде как подставляете минус

lord2kim 30.08.2012 10:39

Цитата:

Сообщение от wawandas (Сообщение 201597)
+ здесь выступает как контактенация а не как арифметическая операция

конкатенация вроде как обычно к строкам применяется

Aetae 30.08.2012 10:46

Цитата:

Сообщение от wawandas (Сообщение 201603)
в данном случае - это знак числа, или не?

Не.
Тогда можно было вообще свести задачу к
var n = 13;
n=+-n; //а чо, + то нужен.
alert(n)


Цитата:

Сообщение от lord2kim (Сообщение 201608)
конкатенация вроде как обычно к строкам применяется

именно к строкам она и применяется в данном случае:
'-' - строка, 13 - приводится к строке.

wawandas 30.08.2012 10:47

Цитата:

Сообщение от lord2kim
конкатенация вроде как обычно к строкам применяется

"-" для интерпретатора строка которую он соединяет с числом при помощи +

lord2kim 30.08.2012 10:51

wawandas, имелось ввиду
return n+(-n)+(-n);

Deff 30.08.2012 10:54

Да Прост чел хотел порадовать новой красивой задачей, но спецом редко можно родить увлекательную, чаще красивый вариант возникает спонтанно или в процессе реальной потребности

wawandas 30.08.2012 10:58

Цитата:

Сообщение от Deff
Да Прост чел хотел порадовать новой красивой задачей, но спецом редко можно родить увлекательную, чаще красивый вариант возникает спонтанно или в процессе реальной потребности


упс, ну я хотел как лучше, что б не думали что мне самому лень ее решать (((

кста нужно создать темки типа:

Логические задачи (программирование)
и простые задачки на логику

Логические задачи

наверно создам

wawandas 30.08.2012 17:21

/*
Используя только арифметическую операцию +, напишите функцию, которая принимает аргумент - число, и возвращает такое же число с противоположным знаком.
Пример: Из числа 13 на выходе получить -13.
*/

может в js есть переполнение? может если долго складывать будет отрицательное число? может баг есть?

ниодно из решений не подходит ((( у меня опускаются руки...

wawandas 30.08.2012 17:25

function negative(n) 
{
  return ~n+1;
}


еще одно, но боюсь эт тоже не подойдет

Aetae 30.08.2012 18:36

Саймое близкое - это моё, потому как там используется только плюс, но как я и говорил - он не арифметический.

В js нет переполнения, слишком большое число станет Infinity, слишком маленькое -Infinity.

wawandas 10.09.2012 22:06

/*На сайте есть функция updatePanel которая отправляет Ajax запрос на сервер и изменяет html части страниц. Нужно обработать этот html перед изменением страницы что то добавить или удалить из него.*/


подкиньте идей для реализации сей задачи, заранее спасибо :)

nerv_ 11.09.2012 00:07

вызывать свою функцию перед updatePanel (или я не понял вопроса)

wawandas 11.09.2012 09:27

наша функция должна вызываться после того как updatePanel получит ответ от сервера

отредактировал задачу

каким образом можно редактировать полученный html от сервера до того как он обновит страницу

nerv_ 11.09.2012 13:10

wawandas, лезть в код updatePanel и прописать там вызов своей функции после ответа сервера.

wawandas 11.09.2012 17:22

это нужно сделать с помощью apply. не знаю нужен ли prototype для реализации

в голове крутиться изложить не могу (((

melky 11.09.2012 20:23

Цитата:

Сообщение от wawandas (Сообщение 204159)
это нужно сделать с помощью apply. не знаю нужен ли prototype для реализации

в голове крутиться изложить не могу (((


function ajax () {
    alert("Я делаю AJAX-запрос");
}


var oldAjax = ajax;

function wrapper () {
    alert("Я оборачиватель AJAX!");
    oldAjax.apply(this, arguments);
}

ajax = wrapper;

ajax();

nerv_ 11.09.2012 23:20

melky,
Цитата:

Сообщение от wawandas
На сайте есть функция updatePanel которая отправляет Ajax запрос на сервер и изменяет html части страниц.

Цитата:

Сообщение от wawandas
наша функция должна вызываться после того как updatePanel получит ответ от сервера

или я не догоняю, или
Цитата:

Сообщение от nerv_
лезть в код updatePanel и прописать там вызов своей функции после ответа сервера


melky 11.09.2012 23:53

Цитата:

Сообщение от nerv_ (Сообщение 204228)
melky,


или я не догоняю, или

Всё верно,я затупил :)

devote 15.09.2012 01:29

Цитата:

Сообщение от melky (Сообщение 204195)
function ajax () {
    alert("Я делаю AJAX-запрос");
}


var oldAjax = ajax;

function wrapper () {
    alert("Я оборачиватель AJAX!");
    oldAjax.apply(this, arguments);
}

ajax = wrapper;

ajax();

как вариант:
function ajax () {
    alert("Я делаю AJAX-запрос");
}

window.ajax = (function( ajax ) {
    return function() {
        alert("Я оборачиватель AJAX!");
        return ajax.apply(this, arguments);
    }
})( window.ajax );

ajax();


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