Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBS/WSH/JS - JS, копирование массива

Ответить
Настройки темы
VBS/WSH/JS - JS, копирование массива
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


я столкнулся с проблемой: у меня массив присваивается ссылкой, а не копированием.
копируем строчку:
Код: Выделить весь код
var str1 = "123123123";
var str2 = new String(str1);
можно ли так же (не перебирая содержимое) скопировать массив?
Код: Выделить весь код
var arr1 = new Array();
arr1["a"] = "a1";
arr1["b"] = "b1";
var arr2 = ...  // делаем это
arr2["c"] = "c1";
// чтобы arr1 и arr2 различались

Отправлено: 22:08, 17-11-2010

 

Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


У вас какой-то слишком формальный подход к кодингу на JS. Первый вариант работает проще:
Код: Выделить весь код
str1 = "123123123";
str2 = str1;
Впрочем, дело ваше.

Для второго есть такой способ:
Код: Выделить весь код
arr1 = [1, 3, 5, 7]; // создаём массив
arr2 = [].concat(arr1); // создаём второй пустой и копируем в него первый
arr2[4] = 88; // добавляем значение во второй
alert(arr2[4] + " | " + arr1[4]); // здесь выйдет "88 | undefined"

Отправлено: 05:28, 18-11-2010 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

pva pva вне форума Автор темы

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Цитата Coutty:
str2 = str1; »
как тогда передать строку по ссылке? (иногда надо)
Код: Выделить весь код
function print(a)
{
	var s = "";
	for(i in a) s += i + ": " + a[i] + "\n";
	WScript.Echo(s);
}

var a = {a:"a1", b:"b1"};
var b = [].concat(a);

a["c"] = "c1";

print(a);
print(b);
Не даёт нужного эффекта. Он взял и прицепил весь массив a одним элементом b. А мне надо сделать копию ассоциативного массива и добавить ему ассоциативный элемент

Отправлено: 21:25, 18-11-2010 | #3


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Конечно не даст. a - это у вас объект, а для b вы используете создание массива []. Хотя, конечно, удивительно, что после всего этого a["c"] = "c1" работает.

Ну и WScript.Echo(s) - это уже не JavaScript. Мы точно о нём ведём речь?

Отправлено: 06:30, 19-11-2010 | #4

pva pva вне форума Автор темы

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Цитата Coutty:
это уже не JavaScript »
Точно о нём. Можно тот же код завернуть в HTA и выводить текст alert(). Движок виндовый wscript

Отправлено: 21:34, 19-11-2010 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


pva, точно не о нём. «javascript» и «jscript» — это два разных языка. javascript не работает в WSH. jscript не работает нигде, кроме WSH и IE.
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:18, 20-11-2010 | #6

pva pva вне форума Автор темы

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


тогда это вопрос по JScript

Отправлено: 15:45, 20-11-2010 | #7


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


Iska, Coutty, да ладно вам пургу гнать: и JavaScript, и JScript, и ActionScript, и QtScript — это один язык ECMAScript, стандарт ISO/IEC 16262.

Отправлено: 11:55, 21-11-2010 | #8


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Busla, ну конечно, только названием различаются...
Правильнее сказать - производные от ECMAScript.

pva, я не знаю, как передавать по ссылке и по значению, поэтому и не готов ответить. Мне это никогда не пригождалось и я просто не представляю зачем это надо. Хватало глобальных и локальных переменных.

Отправлено: 12:02, 21-11-2010 | #9


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Busla, с двумя последними не знаком (тут Вам карты в руки), но JavaScript и JScript — это разные языки. Не нравится название разные языки, давайте назовём иначе — разные диалекты одного языка, как выше сказал Coutty. Стандарт есть стандарт, однако, когда в один язык вводят некоторые расширения, не описываемые стандартом и никак не поддерживаемые другим языком — к чему сие приводит?

Отправлено: 20:16, 21-11-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBS/WSH/JS - JS, копирование массива

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Вывод данных их массива venuko Вебмастеру 10 02-05-2010 17:19
C/C++ - заполнение массива Lisiy_egik Программирование и базы данных 18 20-11-2009 14:58
Java - Элемент массива ManHack Программирование и базы данных 2 23-10-2009 10:41
Разное - Тестирование RAID массива Visor Прочее железо 5 18-02-2008 12:53
Сохранение массива TStringList XCodeR Программирование и базы данных 3 24-05-2005 07:45




 
Переход