Объект Array предоставляет функционал
- Массива с любыми числовыми индексами (разреженного)
- Стека/очереди
Для задания массива, как правило, используется синтаксис с квадратными скобками. Объявление через new Array тоже возможно, но почти не используется.
Пример: Создать пустой массив
var arr = []
Пример: добавить элемент в конец
arr[arr.length] = 5 /* или arr.push(5) */
Пример: Создать массив из разных элементов
var arr = [ 4, "test", , false, [0,1] ]
alert(arr[1]) // => "test"
alert(arr[2]) // => undefined
alert(arr[3]) // => false
alert(arr[4][1]) // => 1
Можно добавить объект под любым индексом, даже превосходящим текущую длину массива. При этом массив хранит (и потребляет память) только те элементы, которые установлены.
В примере ниже массив будет хранить два элемента: номер 1 и номер 999.
Пример: разреженный массив
var arr = []
arr[1] = 5
arr[999] = 6
alert(arr[0]) // => undefined, такого значения нет
alert(arr.length) // => 1000 : последний индекс+1
Ассоциативные массивы
Класс Array рекомендуется использовать только для массивов с числовыми индексами.
Для ассоциативных массивов в javascript применяется Object.
Многомерные массивы
Для многомерных массивов в javascript нет кросс-браузерного синтаксиса.
Обычно используется массив массивов, например:
// 3 в ширину 3 в высоту
// каждый подмассив - колонка
var matrix = [ [1,2,3], [4,5,6], [7,8,9] ]
alert(matrix[1][1]) // 5
Автор: Гость (не зарегистрирован), дата: 1 марта, 2010 - 22:02
#permalinkИли что-нибудь похожее на record есть?
Автор: вебдев (не зарегистрирован), дата: 14 апреля, 2010 - 20:30
#permalinkАвтор, подскажи как преоброзовать массив в строку, а затем обратно из строки получить массив. Чтобы не использовать JSON .
Автор: Гость (не зарегистрирован), дата: 16 апреля, 2010 - 16:38
#permalinkА как просто без затей пройтись по json массиву? Вот сформировал я и получил его. Есть он у меня в переменной. Как перебрать элементы?
Автор: Гость (не зарегистрирован), дата: 22 апреля, 2010 - 09:31
#permalinkесть какой либо метод для проверки существования элемента массива с заданным значением?
Автор: Гость (не зарегистрирован), дата: 5 июня, 2010 - 10:19
#permalinkкак преобразовать js массив в строку формата json ???
Автор: 9IP (не зарегистрирован), дата: 24 октября, 2010 - 09:32
#permalinkа почему у меня обявление через new Array не сработало? может это ошибка браузера? синтаксис был верен...
Автор: Гость (не зарегистрирован), дата: 9 ноября, 2010 - 18:16
#permalinkкак задать массив состоящий из элементов P1, P2,.......Pn, не вписывая все n (большое число) элементов в описание массива, и потом использовать эти элементы как переменные?
либо как задать сразу много переменных P1, P2, .........Pn
заранее спасибо.
Автор: ramon (не зарегистрирован), дата: 24 ноября, 2010 - 18:41
#permalinkЗапрашиваю элемент массива с другой страницы.
Т.е. он в определенное поле должен вставить значение данного массива, но вместо имени элемента он вставляет мне его индекс.
Подскажите, каким атрибутом можно уточнить мой запрос?
Автор: Гость (не зарегистрирован), дата: 18 декабря, 2010 - 03:58
#permalinkкак задать тип данных всем элементам массива?
Автор: гост (не зарегистрирован), дата: 14 января, 2011 - 10:40
#permalinkПодскажите пожалуйста, а если у меня есть строка в ней 16 нулей, как из неё сделать массив из 16 элементов?
Автор: гост (не зарегистрирован), дата: 14 января, 2011 - 10:40
#permalinkПодскажите пожалуйста, а если у меня есть строка в ней 16 нулей, как из неё сделать массив из 16 элементов?
Автор: Гость (не зарегистрирован), дата: 10 марта, 2011 - 20:40
#permalinkАвтор, подскажите, как сделать так, чтробы элементы массива можно было задавать в текстовом окне пользователем?
Автор: Marwell, дата: 1 мая, 2011 - 17:55
#permalinkКак сделать, чтобы в массив входили данные из нескольких символов?
У меня почемуто:
var e=[]
var e=(prompt ('введите массив чисел через запятую')) //1, 2, 3, 4
alert (e[0]) //1
alert (e[1]) //,
alert (e[2]) //
alert (e[3]) //2
alert (e[4]) //,
alert (e[5]) //
alert (e[6]) //3
Автор: bobo (не зарегистрирован), дата: 10 августа, 2011 - 16:21
#permalinkузнай интересный способ преобразования массива в строку, где элементы массива будут идти через запятую
var arr = [1,2,3];alert(''+arr);
Автор: zw0rk (не зарегистрирован), дата: 16 августа, 2011 - 12:28
#permalinkВ хроме как минимум, new Array(items_count) не работает:
> new Array(5)
[]
Автор: maksimr (не зарегистрирован), дата: 1 сентября, 2011 - 12:56
#permalinkУ меня такой вопрос почему:
var foo = function(){ return 1; };
1 == foo; // почему возврашает false
x == y
1) x - Number, y - object
2) x == toPrimitive(y);
toPrimitive -> входной аргумент y - type object
для Object:
Возвращает значение по умолчанию для объекта. Значение по умолчанию для объекта получается путём вызова для объекта внутреннего метода [[DefaultValue]] с передачей ему опциональной подсказки ПредпочтительныйТип. Поведение метода [[DefaultValue]] определяется данной спецификацией для всех встроенных объектов ECMAScript (8.6.2.6).
подсказка будет Number (скорее всего).
Дальше должны следовать такие шаги
Когда метод [[DefaultValue]] объекта O вызывается с подсказкой типа Number, предпринимаются следующие шаги:
1. Вызвать метод [[Get]] объекта O, передав в качестве аргумента "valueOf".
(тут он возвращает объект функцию [сам себя])
2. Если Результат(1) не является объектом - переход на шаг 5.
3. Вызвать метод [[Call]] у Результата(1), передав ему O в качестве значения this и пустой список аргументов.
(вот этот шаг я так понимаю мы можем промоделировать как: foo.call(foo) и он должен вернуть примитивное значение 1)
4. Если Результат(3) является элементарным значением - вернуть Результат(3).
Тогда вопрос почему же false а не true?
Заранее Спасибо!
Автор: Гость (не зарегистрирован), дата: 10 октября, 2011 - 12:39
#permalinkКак посчитать стоимость товаров?Спасибо
var Tovar = ["Ruchka", "Karandash", "Linejka"];
var Zena = ["5", "3", "2"] ;
var Kol = [100, 400, 200] ;
Автор: Гость (не зарегистрирован), дата: 28 ноября, 2011 - 18:37
#permalinkЗдравствуйте! Такая ситуация: Пользователь кликает по странице, после каждого клика появляется квадратик в месте клика. Их может быть столько сколько хочет пользователь. Каждый квадратик элемент массива. как определить индекс, чтобы пользователь мог удалить любой квадратик, щелкнув по нему мышкой.
Заранее спасибо!
Автор: Гость (не зарегистрирован), дата: 4 января, 2012 - 09:02
#permalinkЕсть следующая проблема - получаю данные ajax-запросом. Вывести объект data удаётся без проблем (alert, document.write), но как только пытаюсь присвоить его значение элементу массива - выдаётся ошибка:
array1[0][0]=data; - "Uncaught TypeError: cannot set property '4' of undefined"
пробовал и по другому делать:
array1[0][0]=data(); - "Uncaught TypeError: string is not a function"
Как "победить" присвоение и присвоить текст элементу массива?
Автор: Gigo, дата: 27 января, 2012 - 14:56
#permalinkЕсть переменные x="Kolya" y=14
надо обьявить переменную Kolya14 и присвоить чего нить
как пример получиться что то вроде
var Kolya14 = "чего нить";
Автор: Дим Лис (не зарегистрирован), дата: 29 января, 2012 - 21:49
#permalinkЗачем нужен способ задания
если все остальные элементы этого массива так же можно использовать, не взирая на заданную длину?
Например:
Автор: alexeyserd (не зарегистрирован), дата: 3 февраля, 2012 - 18:56
#permalinkкак отсортировать массив1 из массива2 чисел в порядке возрастания значений чисел. но чтобы сортировка происходила по первому элементу массива2 ?
for(var dj=0; dj<time_array.length; dj++) { for(var da=0; da<time_array.length; da++) { if(time_array[dj][0]<time_array[da][0]) {var temp1=time_array[dj]; var temp2=time_array[(da-1)]; time_array[(da-1)]=temp1; time_array[dj]=temp2; } } }в чем ошибка?
Автор: Questioner, дата: 28 марта, 2012 - 15:01
#permalinkПочему?
Автор: Гость (не зарегистрирован), дата: 16 июля, 2012 - 15:18
#permalinkа если у меня объявлены переменные
var a=2;
var b=3;
как мне их внести в массив?
var m=new Array(a, b); ????
Автор: гость Денис (не зарегистрирован), дата: 27 августа, 2012 - 14:43
#permalinkребята! Здравствуйте! Мучаюсь я тут с одной проблемой, не могу победить. Может Вы что нибудь подскажите?
В общем то есть надобность передать посредством php массив, да так чтобы при загрузке страницы по клику в checkBoxe javascript пошел и забрал этот массив. С этим проблем нет
.....конец php, начало js
..... var checkBoxes = document.getElementsByTagName('input'); jsArray = checkBoxes.value; //проблемы начинаются тут - переменная считывается, но как с массивом я с ней работать не могу(так чтобы запросив jsArray[2] получить 3. вместо этого получаю undefined), хотя запрашивая просто jsArray получаю все содержимое через запятую????? Что делать?..... конец js, начало html
<input name="data" id="check" onclick="checkBox()" value="<?php echo join(",", $phpArray); ?>" type="checkbox">Автор: Гость Денис (не зарегистрирован), дата: 28 августа, 2012 - 08:15
#permalinkкстати! при запросе -
Автор: Гость Денис (не зарегистрирован), дата: 28 августа, 2012 - 08:56
#permalinkразобрался с одномерным массивом! Все работает! Не работает с многомерным
Автор: Гость (не зарегистрирован), дата: 31 августа, 2012 - 17:45
#permalinkне получается создать ассоциативный массив в цикле (используя выборку из тегов).
Пишу следующее:
$(document).ready(function(){ var n=2; var slideData = {}; for (i=0; i<n; i++){ var titleVar = $('#slide' + i + ' p.title').html(), imageVar = $('#slide' + i + ' p.image').html(), urlVar = $('#slide' + i + ' p.url').html(); slideData[i]['title'] = titleVar; slideData[i]['image'] = imageVar; slideData[i]['url'] = urlVar; }Значение переменных из выборки - правильное, а вот с массивом проблема - он пустой. Подскажите, что пишу не так.
Спасибо.
Автор: NisSAM (не зарегистрирован), дата: 5 сентября, 2012 - 13:51
#permalink09 /* Редкий синтаксис: аргумент new Array - одно число.
10 При этом создается массив заданной длины,
11 все значения в котором undefined */
12 var array = new Array(10)
Если я правильно понял, то это вариант дает тот же результат что и
var array=[]; array.length=10;
При этом массив пустой, т. е. вообще не имеет значений. А это не то же самое, что массив со всеми элементами undefined.
Автор: DrLenux (не зарегистрирован), дата: 21 сентября, 2012 - 08:41
#permalinkпишу проверку данных на js, но происходит ошибка кто может её объяснить
var user=document.getElementById("user");
var pass1=document.getElementById("pass1");
var pass2=document.getElementById("pass2");
var err1=document.getElementById("err1");
var err2=document.getElementById("err2");
var err3=document.getElementById("err3");
var p=/^[a-z0-9]$/i;
var q=[0,1,2];
function key1() {
if (!p.test(user)) { q[1]=0; } else {q[1]=1;}
}
_______________________________________________________
Автор: Гость (не зарегистрирован), дата: 5 октября, 2012 - 22:16
#permalinkПодскажите, пожалуйста, как вывести значения многомерного масcива в div:
var td = new Array();
var pib = td[0] = new Array();
var tel = td[1] = new Array();//и т.д//
function s(){
for (var i=0; i<=td.length; i++){ ?}
}
Автор: Гость (не зарегистрирован), дата: 24 октября, 2012 - 17:57
#permalinkА вот подскажите как лучше сделать:
Например есть массив и переменная с прилетевшем значением.
var arr = [0, 5, 12]; var eer = $('#ship :selected').val();Есть выпадающий список select. При выборе из списка option то его value летит в JS и загоняется в err. Вопрос.
Как сделать сравнение перелетевшего значение в err с arr? То есть как с 1го раза проверить а совпадает ли перелетевшее значение с цифрами из массива или нет? Если нет то выдаем определенное сообщение. если совпадает то ничего не делаем и просто идем мимо.
например:
if (err != arr[]) {ok = confirm('Сообщение')};Автор: Гость (не зарегистрирован), дата: 3 ноября, 2012 - 12:38
#permalinkКак стилизовать масив?
Автор: Незарегистрированный (не зарегистрирован), дата: 26 августа, 2013 - 18:03
#permalinkЖаль, что не освещены самые, на мой взгляд, полезные методы: map, filter, reduce, reduceRight, forEach, every, some.
С ними работа с массивами становится очень приятным делом.
Автор: notRegixtered (не зарегистрирован), дата: 6 декабря, 2013 - 01:10
#permalinkне подскажете в каком случае arr[arr.length]=a и arr.push(a) не эквивалентны ?
Автор: goss, дата: 27 января, 2014 - 02:18
#permalinkЧто делать, если нужно найти максимум в массиве? Поможет метод apply.
var nums = [1,2,10,4,5];
console.log(Math.max.apply(null, nums)); // или Math.max.apply(Math, nums)
Чтобы каждый раз не вызывать такой метод для массива через Math, его можно определить для прототипа класса Array.
Array.prototype.max = function() {return Math.max.apply(null, this);};
Автор: Null (не зарегистрирован), дата: 13 марта, 2014 - 18:46
#permalinkДобрый день товарищи. Столкнулся на мой взгляд с примитивной задачей. Подозреваю решение тоже не должно быть особо сложным. Вопрос простой, как можно к определённым элементам массива назначить одно значение.
Мне казалось что так будет работать а нет, назначается только одному элементу.
requiredfields[0,1,2,4,5,8].setRequiredLevel("none");Не хочется описывать каждый элемент по отдельности, хоть их и не много.
Автор: Givis, дата: 16 апреля, 2014 - 18:26
#permalinkЗдравствуйте, есть вопрос касательно элементов массивов. Вот кусок скрипта:
var obj = { name : "Имя" }; var objArray = [obj, obj]; obj = null; alert(obj); for (var i = 0; i < objArray.length; i++) alert(objArray[i].name);Мне казалось, что при указании obj = null по ссылке занулятся и элементы массива. Однако, в последнем alert мне вывелось два раза "Имя". При этом, если у obj занулить поле name, то тогда у элементов массива будет занулён name.
Вопрос - почему так?
Автор: Гость (не зарегистрирован), дата: 28 мая, 2014 - 10:09
#permalinkПодскажите, пожалуйста, как сделать следующее преобразование:
задан массив var arr1=[elem1,elem2,...,elemn] //элементы этого массива переменные; необходимо пройтись по этому массиву, с каждой переменной сделать однотипное математической преобразование, в результате получить новый массив, состоящий из преобразованных переменных var arr2=[elem1new, elem2new,..., elemnnew]? Заранее спасибо.
Автор: Гость (не зарегистрирован), дата: 21 ноября, 2014 - 17:53
#permalinkв php есть удобный способ присвоения различным переменным значения соответствующих элементов массива, например:
$arr = array('1', '2',.. );
list($a, $b) = $arr;
т.е. иными словами результат предыдущей строчки будет аналогичен коду:
$a = $arr[0] //== '1'
$b = $arr[1] //== '2'
есть ли нечто похожее в javascript?
Автор: Гость (не зарегистрирован), дата: 20 марта, 2015 - 16:13
#permalinkдобавьте в справочник описание метода forEach, подробнее
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global...
Автор: Гость (не зарегистрирован), дата: 18 августа, 2015 - 14:34
#permalinkvar arr = [ 4, "test", , false, [0,1] ]
alert(arr[1]) // => "test"
alert(arr[2]) // => undefined
alert(arr[3]) // => false
alert(arr[4][1]) // => 1
Я не понял почему в 3-ей сторочке элемент underfined, если элементы в массиве нумеруются с нуля, то 2-й элемент должен быть false. Тот же вопрос и по 4 строчке. Поясните, пожалуйста.
Автор: dronsen, дата: 25 августа, 2015 - 11:48
#permalinkВсем привет!
Есть такой селектор
<lable>forfeit: <select name="forfeit" id="forfeit_select"> <option value="none">select...</option> <option value="0,0964516129032258">Banner</option> <option value="0,1609677419354839">Copyright</option> </select> </lable><br/> <button id="result_forfeit" onclick="forfeit_pait()">to get result</button>По нажатии кнопки выполняется следующая функция:
function forfeit_pait(){ var type = document.getElementById('forfeit_select').value; var paid=1*type; alert(paid); }Вопрос, почему из value передается строковый тип данных вместо числового? И как сделать что бы передавалось число?
Автор: Гость (не зарегистрирован), дата: 8 сентября, 2015 - 20:26
#permalinkЕсли указан лишь один числовой параметр elem0 и массив объявлен через new Array, то будет инициализирован пустой массив длины, равной данному числу. При этом все элементы являются undefined.
Please note, that new Array(45); does not "create a 45 element array" (in same meaning as [undefined,undefined,..undefined] does). It rather "creates empty array with length = 45" ([undefined x 45]), same as var foo = []; foo.length=45;. That's why forEach, and map will not apply in this case. – tomalec Jan 24 '14 at 14:00
Автор: Гость (не зарегистрирован), дата: 31 января, 2016 - 20:12
#permalinkа как же : reduce(), map(), filter(), some(), every()?
Автор: Гость (не зарегистрирован), дата: 24 декабря, 2017 - 13:18
#permalinkvar n = +prompt( 'значение n', '' ); function fib(n) { var a = 1, b = 1; for (var i = 3; i <= n; i++) { var c = a + b; a = b; b = c; } return b; } console.log( fib( n ) );задача:не применяя методы массивов вывести n первых членов ряда Фибоначчи
Автор: Гость (не зарегистрирован), дата: 19 января, 2018 - 15:18
#permalinkНикак не могу понять. Почему это не работает:
var arr = Array(3); //arr.fill(0); var arr2 = arr.map((item,i,ar) => { return 1; }); console.log("arr:", arr); console.log("arr2:",arr2);, а это работает:
var arr = Array(3); arr.fill(0); var arr2 = arr.map((item,i,ar) => { return 1; }); console.log("arr:", arr); console.log("arr2:",arr2);Автор: Гость (не зарегистрирован), дата: 23 марта, 2019 - 20:09
#permalinkОшибка есть:
arr[arr.length] = 5
Нужно:
arr[arr.length-1] = 5
Автор: Гость (не зарегистрирован), дата: 25 января, 2022 - 04:01
#permalinkЗдравствуй, JS!))
Есть многомерный массив:
Как к каждому подмассиву присоединить соответствующий аудиофайл, чтобы при вызове подмассива он звучал?
Спасибо!