Javascript.RU

concat

Синтаксис

var newArray = array.concat(value1, value2, ..., valueN)

Аргументы

value1, value2, ...
Массивы или значения для присоединения

Описание, примеры

Создает новый массив.

Копирует в него текущий объект array и значения value1, value2, ...

При этом, если значение является массивом, то в результат попадут его элементы (в отличие от push), а не сам аргумент.

Метод concat ничего не меняет. Вместо этого он просто возвращает комбинацию "в один уровень глубиной" текущего объекта и аргументов.

Элементы аргументов-массивов добавляются в результат следующим образом:

Объекты
Копируется ссылка на объект. Таким образом, старый и новый массив ссылаются на один и тот же объект. Если объект меняется - эти изменения видны и в новом и в старом массивах.
Элементарные значения
Копируются "как есть"
Пример: объединение двух массивов
var alpha = ["a", "b", "c"];
var numeric = [1, 2, 3];

// создает массив ["a", "b", "c", 1, 2, 3]; 
var alphaNumeric = alpha.concat(numeric);
Пример: объединение трех массивов
var num1 = [1, 2, 3];
var num2 = [4, 5, 6];
var num3 = [7, 8, 9];

// создает массив [1, 2, 3, 4, 5, 6, 7, 8, 9]; 
var nums = num1.concat(num2, num3);
Пример: добавление значений в массив
var alpha = ['a', 'b', 'c'];

// создает массив ["a", "b", "c", 1, 2, 3]
var alphaNumeric = alpha.concat(1, [2, 3]);

Автор: Гость (не зарегистрирован), дата: 30 января, 2010 - 00:23
#permalink

"Объекты
Копируется ссылка на объект. Таким образом, старый и новый массив ссылаются на один и тот же объект. Если объект меняется - эти изменения видны и в новом и в старом массивах."

var MyArr= new Array(1,2,3,4,5,6);
			var NewArr= new Array(6,5,4,3,2,1);
			var Result=MyArr.concat(NewArr);
			alert(Result);
			MyArr[0]=0;
			alert(Result);

почему же значение не меняется?


Автор: Мараторий, дата: 30 января, 2010 - 02:15
#permalink

Потому что здесь:

var Result=MyArr.concat(NewArr);

присваивается не ссылка на MyArr, а создается новый массив, ссылка на который записывается в Result.


Автор: Гость (не зарегистрирован), дата: 2 марта, 2010 - 00:29
#permalink

если не понял, замени MyArr[0]=0 на Result[0]=0


Автор: ArtIMen (не зарегистрирован), дата: 31 января, 2011 - 14:42
#permalink

Потому что в массиве у тебя не объекты, а элементарные значения. Чтобы значение менялось, нужно создавать объект, например, Number(6), и менять уже его.


Автор: Гость (не зарегистрирован), дата: 21 января, 2011 - 05:37
#permalink

если объединение двух массивов - массив, то с ним можно работать, как с массивом. Тогда почему не работает код:
array1= new Array ("Первый", "Второй", "Третий");
аrray2 = new Array ("Один", "Два", "Три") ;
document.write (array1.concat(array2).join ())


Автор: Гость (не зарегистрирован), дата: 21 января, 2011 - 05:54
#permalink

вопрос снят. Найдена ошибка в коде (у переменной array2 при объявлении первая буква русская). Спасибо Firebug)


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
1 + 17 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Реклама

Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние темы на форуме
Forum
Последние комментарии