Массивы
Javascript поддерживает два вида структуры "массив":
- Ассоциативный массив (хеш), где данные хранятся по произвольному ключу.
Об этом читайте в разделе Объекты.
- Числовой массив
Array , где данные хранятся по номерам.
Он описан в этой статье.
Javascript - очень гибкий язык, поэтому технически в Array можно хранить произвольные ключи, как в Object . Но лучше использовать типы по назначению.
Для хранения данных по номеру предназначен тип Array .
var arr = new Array()
arr.test = 5
arr[1] = "blabla"
...
В типе Array есть специальные методы, ориентированные именно на работу с числовыми ключами.
Есть два эквивалентных способа создания массива:
var a = new Array()
var a = []
Или, сразу со значениями
var a = new Array("a", 1, true)
var a = ["a", 1, true]
Эти способы работают одинаково, кроме объявления вида new Array(10) , когда у конструктора есть единственный аргумент-число.
Такое объявление создаст пустой массив (все элементы undefined) длиной 10 . По возможности, не используйте new Array .
Отсчет элементов начинается с нуля:
alert(a[0]) // => "a"
Массив хранит данные по численным ключам, но внутри он использует точно такой же хэш (ту же структуру данных), как и обычный объект, поэтому можно сделать так:
var a = []
a[1] = 1
a[999999] = 2
и массив a будет занимать память, нужную для хранения этих двух соответствий, а не займет длинный непрерывный кусок памяти, как это произошло бы в языке С.
У каждого массива есть свойство length , которое автоматом меняется при каждом обновлении массива. Длина массива - это не количество элементов, а максимальный целый ключ + 1:
alert(a.length) // всего 2 элемента, но выведет 1000000
Добавлять новый элемент можно эквивалентными вызовами
a[a.length] = "new element"
a.push("new element")
Перебор элементов обычно (когда индексы непрерывные) осуществляется простым циклом:
var arr = [ "array", "elements", "here" ]
for(var i=0; i<arr.length; i++) {
... сделать что-то с arr[i] ...
}
Если индексы - с разрывами, то перебор осуществляется так же, как в объектах:
var arr = []
arr[1] = 123
arr[9999] = 456
for(var i in arr) {
if (!arr.hasOwnProperty(i)) continue;
... сделать что-то с arr[i] ...
}
В массиве есть всё необходимое, чтобы работать с ним как с очередью или со стеком, или и с тем и другим одновременно.
Методы push и pop добавляют или вынимают значение с конца массива
var arr = [3,5,7]
arr.push(9)
var last = arr.pop() //= 9
var last = arr.pop() // = 7
alert(arr.length) // = 2
Методы shift /unshift делают то же самое, с начала массива.
var arr = [4,6,8]
arr.unshift(2) // arr = [2,4,6,8]
arr.unshift(0) // arr = [0,2,4,6,8]
var last = arr.shift() // last = 0, arr = [2,4,6,8]
arr.shift() // arr = [4,6,8]
shift/ unshift обычно приводят к перенумерации всего массива. shift сдвигает все элементы на единицу влево, а unshift - вправо. Поэтому на больших массивах эти методы работают медленнее, чем push /pop.
slice(begin[, end])
Возвращает подмассив с индексами begin…end .
splice(index, deleteCount[, element1,…, elementN])
Удалить deleteCount элементов, начиная с index, и вставить на их место element1…elementN
Есть и еще много методов:
О них можно почитать на английском, например, в http://developer.mozilla.org/en/..Array
|
Видел конструкцию типа:
a = new array(
{"attr1":"text1","attr2":"text2"}
{"attr1":"text3","attr2":"text4"}
);
Поясните, что это такое?
new Array()
- это создание массива из аргументов.Например,
new Array(1,2,3)
- массив из трех элементов: 1,2,3, такой же как и[1,2,3]
.Аргументами в данном случае являются объекты. То есть, у тебя создается массив из двух объектов, каждый из которых задан как
Подробнее об объектах и задании объектов - см. Объекты Javascript в примерах.
Это массив обьектов
пример работы:
Массив объектов!
!!! помогите
let arr=[5,2,3,6,4];
console.log(arr.indexOf(4));//4- это название элемента, если написать arr.indexOf(4,2) то 2 будет указывать к какого элемента надо начинать искать.
А удалять массивы нужно и как вообще очистить существующий массив наиболее коректно?
Javascript автоматически очищает память, как и Java, в отличие от C/C++, поэтому вы можете присвоить переменной новый массив:
При этом старый объект-массив будет удален в процессе "сборки мусора".
Неверно. Если присвоить arr новый пустой массив, то "где-то в другом месте" у нас могут остаться ссылки на старый, из-за чего он останется висеть в хипе мертвым грузом, пока не исчезнут все остальные ссылки. Раз уж речь идет об очистке непосредственно объекта, а не ссылки на него, то делать нужно так:
Наиболее корректно будет как уже ниже описал Дзен-трансгуманист
arr.length = 0;
Разрешите поинтересоваться, чем плох
Для последующей инициализации массива ещё раз объявляем его с ключевым словом var.
----------------------------------------
window.open(window.location);
переменная удаляется только в том случае, когда перестаёт существовать замыкание в котором они объявлены, а оно перестаёт существовать, как выполнится соответствующая функция и исчезнут все ссылки на эту переменную вне замыкания.
повторное определение "var x" абсолютно ничего не даст, если в этом замыкании уже существует переменная "x".
как задать на яваскрипт двумерный массив...я кучу всего перепробовал неполучается...в браузере не отображается
Обычно это делается созданием массива каждый элемент которого тоже массив.
Насчёт создания массивов
Это далеко не эквивалентные строчки.
Первая создаст массив с длинной в десять элементов.
А вторая массив с одним элементом содержащим значением 10.
Это факт при незнании может приводить к логической ошибке.
Верное замечание, только что наткнулся на подобную проблему...
Люди помогите : " Размер массива определяет количество ... в массиве "
Вместо точек какое слово ставиться , плз помогите
Элементов.
Парень, ты что - тест сдавал? Какой-то слишком очевидный вопрос! Или плохо читал статью, или лучше займись чем-то кроме программирования.
О, да, ты у нас прямо гений программирования
насколько я понял из статьи, в JavaScript массив - это не отдельный тип данных, а просто разновидность объекта? То есть если объект создаётся как ar = {}, то его можно считать ассоциативным массивом, ключи которого есть свойства и методы объекта, а если ar = [] или ar = new Array(), то это объект-массив-список + плюс к нему добавляются методы для работы с массивом-списком. Это правильные выводы?
Да, выводы правильные. При этом, если вы сделали массив Array - не рекомендуется использовать его как ассоциативный Object.
Есть массив с прерывистыми индексами идущими не по порядку:
Вопрос: как пройти по этому массиву в порядке создания и при этом не сбросить ключи? Т.е. мне нужно получить все знаения в том порядке в котором они созданы (1, 2, 3) при этом внутри цыкла я должен знать ключ.
Если делаю for (var i in arr) { ... } - почему то перед проходом массив сортируется по ключу и обход идёт в порядке: 2, 1, 3.
Была мысль попробовать while ( var v = unshift(arr) ) { ... } но тогда я не узнаю индексы.
подозреваю, что вы пользуетесь браузером Google Chrome версии 1 или 2, именно в них замечен подобный глюк, во всех остальных браузерах, включая Google Chrome 3, проход по массиву через for (.. in .. ) производится в том порядке, в котором элементы в этот массив помещены
Вообще-то так только в IE, а остальные как раз упорядочивают по индексу (пробовал в FF 3, Opera 10, IE 8, Chrome 4, Safari 4).
Это конечно не ответ на твой вопрос, но можно сделать так:
Полностью поддерживаю. Для тиках манипуляций точно лучше использовать ассоциативные массивы, которые не привязаны жестко к ключу. Хотя в твоем случае очень похоже на очередь. Так что лучше юзать ассоциативный массив с вызовами методов очереди.
Скажите пожалуйста, если использую массив для хранения обьектов, то перед удалением массива надо обнулить все ссылки внутри?
То есть так:
Или обнулять каждый елемент не обязательно?
Спасибо.
Не нужно. Просто задайте
arr
новое значение. Сборщик мусора сделает все за Вас.В некоторых браузерах сборщик мусора можно вызвать явным образом, но, как правило, это не требуется. Мало какой массив сравнится по своей громоздкости с тем же объектом
document
(на этой странице к нему так или иначе прицеплено более трех тысяч объектов).Кстати, оптимизируя память, обратите внимание на области данных (как по-русски назвать то, что на этом сайте именутеся
{{scope}}
?).Пример:
Этот пример вовсе не удалит массив, а создаст новый элемент
myHugeArray
в областиdeleteArray
, который успешно умрет когда функция отработает, т.е., сразу же.Ну, да, если в функции переменная объявляется через var, то со своей глобальной тезкой она ровным счетом ничего не сделает. Но стОит убрать var из фунции — и о, чудо!
Кстати, размер массива тоже надо немного урезать, а то фаербаг говорит, что таких массивов не бывает.
///
как по-русски назвать то, что на этом сайте именутеся {{scope}}?
***
область видимости
Scope - область видимости.
подскажите пжл как мне задать двумерный массив(в виде матрицы) чтоб элементы задавались random...если можно то попроще))
Создать массив массивов. Если еще актуально.
Создается и печатается как то так, ну а Рандом уже сам найдешь, я думаю.
подскажите что я делаю не так....мне нужно ввести матрицу размера n на n случайным образом....
n=prompt("Введите н","");
Math.random(10);
var v=new Array(Math.random());
for(i=0;i');
Скажите, а что должно происходить в этом случае:
ar1=["tutu"];
function (){
let ar2 = [];
ar2["a1"]="aa";
ar2["a2"]="bb";
ar1=ar2;
return ar2;
}
что вернёт функция? Что после её отработки будет в ar1?
Пожалуй, ничего. Этот код вызовет ошибку синтаксиса.
Если let заменить на var и дать функции какое-нибудь имя, при запуске она вернет ассоциативный массив:
В ar1 будет точно такой же массив.
Скажите, как найти индекс элемента в массиве?
В новых браузерах есть метод indexOf (как у строки).
Для остальных нужно что-то вроде
>>this[i] === searchElement
Не знаю зачем нужно тройное равно, но у меня заработало только когда я превратил его в двойное.
Значит, IE6 уже не новый... Впрочем, это и так ясно. Спасибо.
а как удалить элемент массива зная его значение
Найти индекс и удалить как обычный.
P.S. Только indexOf не всеми браузерами поддерживается, поэтому для некоторых придется писать свою версию.
Мне кажется, что Вы дали не совсем корректный совет. Потому как delete удалит ключ из массива (индекс), само значение тоже "пропадает", но длина массива от этого не изменится (кстати вас не смутила запятая в конце?).
Полное удаление будет выглядеть так:
Для удаления с конца массива больше подойдет myArr.pop(), а с начала myArray.shift().
Господа, есть вопрос:
Мне нужно создать двумерный массив с двумя параметрами. Я делаю это создавая двумерный массив n на 2. То есть n - число элементов. А 2 - собственно место для двух параметров. Написал я вот так.
При первом вызове alert выдает, то же что и при втором, то есть я так понимаю, pop не удаляет элемент и при абсолютной адресации я опять получу его значение. Как тогда определить мне количество элементов?
buffer_a.lenght почему-то выдает undefined
Подскажите я вообще правильно делаю все? Может есть способ сделать проще?
Пардон, это я length неправильно написал.)
Ну все равно, насчет способа реализации. Может есть проще?
Еще вопрос, товарищи, как определить индекс по элементу в двумерном массиве. Например так:
Теперь как мне найти индекс массива с элементом (2, 3). indexOf я так понимаю не поможет здесь?
подскажите, почему она s выдает как строку, а не считает сумму?
<МЕТА content="text/html; charset=windows-1251" http-equiv="Content-Type">
var d =new Array();
for(i=0;i<5;i++)
{
d[i]=prompt("Введите число","");
document.write ("d["+i+"]="+d[i]+"");
}
alert ("сейчас будет хрень") ;
var s=1;
for(i=0;i<5;i++)
{
s+=d[i];
}
document.write("summ="+s);
Попробуй
d[i] = parseInt(prompt(...) || '0');
Потому что prompt() возвращает строку.
Можно так
d[i]=+prompt("Введите число","");
Поиск индекса свойства по его значению или определение индекса многомерного масива по значению.
Точнее
Народ, подскажите нубу
Opera, IE, Chrome, Safari глотают эту функцию,
а Firefox не хочет, в чём дело?
function parseTable(v) {
var tbls =document.getElementById('table_tr');
for (var r=0; r
Народ, подскажите нубу
Opera, IE, Chrome, Safari глотают эту функцию,
а Firefox не хочет, в чём дело?
Ссори, не правильно оформил первый пост.
Потому что вместо cls.innerText в FireFox нужно использовать cls.textContent
по моему ты селектор не верно написал #table_tr
Никак не пойму как определить длинну ассоциативного массива. С обычным массивом без ключей фу-ия length работает нормально....а вот с ассоциативным массивом трабл выходит =/
вот пример:
в итоге в браузере отображается undefined!!! =/ Что я неправильно делаю ? =)
var nelem = 0
for(var i in arr) { nelem++ }
Может так? У меня работает...
По идее, когда мы пишем
это эквивалентно
Получается, что Вы прибавляете к объекту типа Array новые свойства.
по идее в ваше примере длинна как была ноль (когда вы объявляли new Array()) так и осталась равной нулю, так как написав "test['one'] = 1;" вы не положили данные в массив, а создали новое свойство у объекта test.
15.4 Объекты Array
Сам тип Array это не ассоциативный массив, а обычный индексный массив.
Ассоциативные массивы в javascript заменяют объекты
почему a!=b при
a = new Array(1,2,3)
b = new Array(1,2,3)
?
Потому что любые два разных объекта не равны (пункт стандарта 11.9.3).
А как выглядит функция, которая создает двумерный массив?
Подскажите, пожалуйста, если вообще разница между такими строками:
var name = new Array();
var name = Array();
Методы массива работают в обоих случаях.
заметил одну особенность IE6: он не поддерживает создание массивов в таком виде
Ему надо только так:
Почему-то об этом нигде тут не сказано....
Не может такого быть! Сейчас нет под рукой IE6, чтобы проверить, но за все время веб-разработки не припомню проблем с такой инициализацией массива.
Вся линейка ИЕ очень болезненно реагирует на конструкцию вида [1, 2, 3,] (обратите внимание на запятую в конце списка)
У меня еть отсортованный масив. Как мне организовать посчёт количества одинаковых элементов в нём?
Почему массив растет и появляются элементы со значением undefined?
Подскажите где можно найти информацию на эту тему.
function randomArray(){
var a=new Array(0,1,2,3,4,5,6,7,8,9);
for(i=0;i
Интересная статья, но для сайта позиционирующегося как русскоязычный справочник по javascript - слабовато. Хорошо бы описать все функции до конца, а ссылку на MDN поправить - она ведёт в никуда. (Правильная ссылка https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Arr...)
Подскажите, пожалуйста. Почему не работает поиск по массиву. Количество элементов в числовом массиве 7982. Поиск на странице осуществляется с помощью функции:
function ResetSearch()
{
LastMatch = 0;
for(var i = 1; i <=Fields; i++)
{
document.SearchForm.elements[i+3].value = "";
}
}
подскажите пожалуйста как создать двумерный массив из 300 целых элементов и каждое 2 число обнулить?
Здравствуйте, есть функция которая возвращает двумерный массив
function create_mas(elem) {
...
mas = [[x,y], [], []];
return mas
}
чтобы получить значение x, нужно написать mas[0][0], НО когда я в другой функции делаю так:
function test(elem) {
var mas = create_mas(elem);
}
то чтобы добраться до того же значения приходится писать mas[0][0][0], почему так?
В статье не сказано, что свойство length можно менять. Например, если уменьшить на единицу, то последний элемент массива удалится. Это не сравнить с оператором delete, который оставляет пропуск в массиве.
Можно написать функцию, которая нормально удаляет элемент из массива, а не через одно место:
Это не будет работать правильно, надо подправить так:
Уменьшать длину недостаточно.
Покажите пример, когда будет работать неправильно?
В мой код нужно лишь добавить проверку на пустой массив:
А так всё правильно.
А чем вам не нравится
A.splice(3, 1) ?
Нативный метод, как ни крути, быстрее
Объясните пожалуйста, почему при вызове функции изменится глобальный массив?
var massive = [1,2,3,4,5];
function func(m) {
var mas = m;
for (i = 0; i < mas.length; i++)
mas[i] = mas[i]*mas[i];
return mas;
}
alert(massive+" -------> "+func(massive)+" -------> "+massive);
Изменяется не сам массив, а свойства 0..mas.length (которые перебираются в цикле), т.е. его элементы.
Чтобы этого не происходило, пишите так:
Спасибо
Потому что аргументы-объекты передаются в функцию по ссылке, а не по значению.
Как узнать, сколько та или иная переменная, либо массив занимает памяти?
Нужно для оптимизации.
Если ещё актуально - дохлый номер.
Стандарт не описывает внутреннюю реализацию. разработчики браузеров могут хранить переменные как им заблагорассудится.
подскажите пожалуйста, почему переменная poly выводиться в alert как NaN
function res(){
var X = new Array();
var Y = new Array();
for (i=0; i<=$("#txt").val(); i++){
X[i] = $("#iks"+i).val();
Y[i] = $("#igr"+i).val();
}
for (i=0; ii){ temp = (Y[i]-Y[j])/(X[i]-X[j]);
Y[j]=temp;}
}
}
var poly=Y[0];
poly = parseInt(poly);
var mn=1;
//mn = parseInt(mn);
for (i=0; i
Подскажите как создать массив в объекте, есть (загвоздка возникает как его прописать в конструкторе или есть другие способы):
Упрощаем и убираем ошибки:
Очень признателен вам Павел за вашу помошь. Если честно я уже разобрался, но всеже интересен и ваш вариант.
1. Мне не совсем понятно зачем выполнять проверку на условие? (т.е. если colors undefined то мы ему присваиваем цвет silver)
2. Просто делает дальнейший текст более читабельным?
Мой вариант:
1. нет. если приведение colors к булеву типу дает false, то присваиваем ей(переменной) массив, состоящий из одного значения - строки 'silver'
т.е. код
означает это
/* что и как, какие типы при приведении дают false, вы можете почитать тут */
2. Да. Но на самом деле, в FF наблюдается серьёзный прирост тормозов при использовании цепочки вроде
Конечно, наблюдается, когда число обращений к o[i] исчисляется десятками.
Спасибо Админу за такую инфрмативную заметку. Есть один вопрос: как суммировать только чётные элементы массива? Заранее спасибо.
очень просто :
вместо i-- написал i -= 1, потому что мне так больше нравится, и так чуть быстрее
Скажите, а как сделать рандомную выборку из массива?
Добрый день. что не так.....
помогите
var a=[[],[]];
a[0][1]='0';
a[1][1]='a';
a[1][2]='b';
a[1][3]='c';
a[1][4]='d';
a[1][5]='e';
a[1][6]='f';
a[2][0]='g';
анологично...
нумерация начинается с нуля
тоже самое...
у меня массив с пропусками...
//a[0].push(new Array('3','1','a03'));
//a[1].push(new Array('4','1','b24'));
в идеале вот так должно быть
где косячу...
Добрый день! После вашего метода, у меня выводит ошибку "TypeError: can't convert undefined to object"
Что можно сделать? Помогите!
а почему в первой строке не
var a=new Array();
Жаль, что push не возвращает экземпляр массива, чтобы можно было сделать так:
[]
.push({})
.push({})
.push({})
.push({})
.push({});
это уже паттерн, который можно реализовать
ну или дописать самому.
Цепочки вызовов. Я вас люблю!
Если не секрет, почему? Где подводные камни?
лично я никогда не использую new Array(), во-первых из-за минимализма, наверное (всегда стараюсь привести размер js-файла к минимуму, почему-то кажется, что от этого страница быстрее грузиться будет), во-вторых из-за мистичности new Array() в зависимости от количества аргументов (я так считаю, ибо мышление такое). То есть, где-то выше уже сказано:
Если эти строки идентичны:
То эти совсем нет:
Я - "чайник", поэтому не удивляйтесь супер простому вопросу. У меня числовые данные для анализа размещены в достаточно большом массиве (около 3000 строк и 10 столбцов). Массив представлен в виде файла. Как средствами JS считывать последовательно данные из столбцов и где должен быть размещён массив?
Заранее спасибо.
С уважением yrvas
Видимо речь идет о таблице *.xls, тогда нужно получить доступ к объектам EXEL. Покопайтесь в макросах Екселя чтобы получить названия и свойства объектов. Кроме того нужно будет научиться запускать Ексель методами Windows Script Host.
А что означает фраза "Длина массива - это не количество элементов, а максимальный целый ключ + 1"?
Разве массивы
имеют какой-либо (и отличающийся) максимальный целый ключ?
В Вашем случае никаких значений не создаётся (соответственно, и ключей нет), устанавливается лишь значение length. Зато в случае
В массиве явно меньше 11 элементов, но length == 11.
Здравствуйте! Может вопрос и глупый но все же, можно как нибудь вот в этом скрипте
var arr_id = new Array();
arr_id[i] = 7;
';
вместо i подставлять ранее объявленную в php?
php формирует html поток документа, соответственно все решение проблемы будет заключаться в php echo $i в нужном месте формируемого документа.
Пожалуйста объясните почему при присвоении элементу массива значения может возникать ошибка: Uncaught TypeError: cannot set property '4' of undefined? Справиться с ней не удалось пока никак. Такая же ошибка возникает при добавлении элемента через push. Заранее спасибо.
народ подскажите плиз как элементам массива присвоить значение других массивов. Var ar=new Array(); var m=new Array(); ar[1]=1;ar[2]=1;m[1]=new Array();m[1]=ar; дальше присваиваем ар'у другие значения и м.2=ар, в итоге м содержит два ар как ссылки на ар
var ar=new Array();
var m=new Array();
for(var i=0;i<8;i++){ar[i]=new Array();for(var j=0;j<8;j++){ar[i][j]='x';}}
m[1]=ar;
for(var i=0;i<8;i++){ar[i]=new Array();for(var j=0;j<8;j++){ar[i][j]='y';}}
m[2]=ar;
for(var i=0;i<8;i++){ar[i]=new Array();for(var j=0;j<8;j++){ar[i][j]='i';}}
alert(m);
//в итоге выведет дважды значение массива ар. М1.0=ар не помогает, тк надо сначало м.1 сделать массивом, а это тоже самое: задача: элементам массива присвоить значения других массивов. Не уж то писать отдельную функция и присваивать каждое конечное значение тысяч ячеек многомерных массивов?
Действительно при попытке присвоить переменной или элементу массива значение объекта (массива), будет создаваться ссылка на объект, а не его копия. Попробуйте ar.concat
Метод Array.concat() создает и возвращает новый массив, содержащий элементы
исходного массива, для которого был вызван метод concat(), последовательно до
полненный значениями всех аргументов, переданных методу concat(). Если ка
койлибо из этих аргументов сам является массивом, в результирующий массив
добавляются его элементы. Однако обратите внимание, что рекурсивного разде
ления массивов из массивов не происходит. Вот несколько примеров:
var a = [1,2,3];
a.concat(4, 5) // Возвращает [1,2,3,4,5]
a.concat([4,5]); // Возвращает [1,2,3,4,5]
a.concat([4,5],[6,7]) // Возвращает [1,2,3,4,5,6,7]
a.concat(4, [5,[6,7]]) // Возвращает [1,2,3,4,5,[6,7]]
Добрый день, подскажите как осуществить замену элементов массива например нужно в массиве
поменять местами
и
?????
frant23,
А как определить массив или объект?
например:
a = {}; // создаем объект с методами и свойствами
b = []; // создаем массив с элементами
alert( typeof a ); // выведет 'object'
alert( typeof b ); // выведет 'object'
проверять методы push и другие не катит, в объекте могут эти методы тоже присутствовать
P.S. Малоизвестная фишка, между прочим. Другой пример:
ппц..
А возможно ли в js сложить числовые массивы в таком виде:
var a = []
a[1] = 1
a[999999] = 2
и массив a будет занимать память, нужную для хранения этих двух соответствий, а не займет длинный непрерывный кусок памяти, как это произошло бы в языке С.
Ошибаетесь, a.length = 1000000
а значение типа 999999999 убивает браузер вообще...
Здравствуйте! Мне нужно убрать нули из массива, данные считываются с листа в exsel, по данному алгоритму y(i) почему-то просто копирует х(i) в чем дело?
For i = 1 To n
For j = 1 To n
x(i) = Cells(i, 1).Value
y(i) = 0
If (x(i) <> 0) Then y(i) = x(i)
Cells(i, 6).Value = y(i)
Next j
Next i
А зачем - j?
А, вообще "y(i) = 0" всегда ноль, а когда x не ноль, то y(i) = x(i)
А почему x не должен повторять y?
Нашёл обидную ошибку в IE8 с лишней запятой:
IE8: ['a','b',].length -> 3
FF11: ['a','b',].length -> 2
IE8: ['a','b'].length -> 2
FF11: ['a','b'].length -> 2
Обидная, бо обычно пишем так:
var a = [
'grrrrA',
'grrrrB',
'grrrrC',
];
Последняя лишняя запятая ошибкой не считается.
А вот теперь, если перебирать массив в IE8, то получим лишний эллемент:
for(var i = 0; i < a.length; i++) {
a[i];//в самом конце это даст undefined
}
Большое спасибо! Не так давно натыкался на такую проблему но суть не сразу понял, решил что просто лишняя запятая и убрал ее не задумываясь, теперь хоть понял суть
Всем доброго времени суток! Я начинающий прогер, подскажите, чего я не понимаю, плиз!!!
Var A=new Array();
var B=new Array();
1 вариант:
len=A.length+B.length;
C=new Array(len-1); - в массиве С появляется 1 лишний элемент, пустой в конце.
2 вариант:
len=A.length+B.length-1; а тут все нормально, почему?
C=new Array(len);
Приведите полный код с наполнением массива. Так можно долго гадать.
как вывести номер строки ?
массив [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
Я просто оставлю это здесь:
function unset( obj, key ) {
( Array.isArray(obj)? obj.splice(key, 1) : delete obj[key] );
}
Кто нибудь может по простому написать пример как создать двумерный массив? Две недели убил на поиски. Везде одно и то же. Такое впечатление что все друг у друга передирают эти примеры.
А как вам вот это, цитирую -
"... Если в качестве элементов некоторого одномерного массива создать массивы, то получится двумерный массив. Обращение к элементам такого массива происходит в соответствии со следующим синтаксисом:
имя_массива[индекс_уровня1] [индекс_уровня2]" ?
А где же пример его создания???
Подскажите пожалуйста, как создать пустой двумерный динамический массив, что-бы в него можно было поместить, например содержимое таблицы размер которой заранее не известен.
Нету в Javascript двумерных массивов. Тупо нету.
Если он вам нужен - эмулируйте его с помощью массива массивов.
Вот вам пример моего собственного написанного оператора для javascript массива.
данный оператор хорошо использовать в очередях хранения.
Товарищи, нужно удалить из двумерки строку / столбец.
] A = [4][4], тогда при удалении 2 строки все индексы смещаются (т.е на месте 2й будет 3я, на месте 3й - 4я)
как это сделать не перемещая в цикле строки?
и соответственно не создавая буфферный массив
помогите составить прграмму определения каких эллементов в масиве больше четных или нечетных
помогите решить задачу по раскрою листа (необходимо разложить и выявить на какой формат больше помещается),
если каждому элементу 1го массива присвоить каждый элемент 2го массива.(все находится в одном столбце т.е если t1=400 то t2 = 145)
t1= [400,200,345, n...] //длинна листа
t2 = [145,235,456,n...] //ширина листа
я знаю x и у. Теперь мне нужно 1) x/t1 *y/t2 и 2) x/t2 и y/x1 и затем выбрать
вариант 1 или 2 в зависимости от того на каком больше.
Помогите ответить на один вопрос:
Есть функция, она подписывает функцию на сообщения издателя (паттерн observer)
Function.prototype.subscribe = function (publisher, eventSource)
{
publisher.addListener(eventSource, this);
if (typeof this.subscribeList == 'undefined')
this.subscribeList = [];
//Функция сохраняет издателей, на которые она подписана
this.subscribeList.push(publisher);
return this;
}
используется она так:
function a(msg, source)
{
...
}
a.subscribe(publisher, eventsType);
Теперь вопрос:
Как мне сделать поиск по массиву this.subscribeList, чтобы поиск происходил не полным перебором.
или вопрос по другому:
у меня есть callback функция f(), как мне вычислить ключ K(f) с которым я запишу эту функцию в массив, чтобы во время поиска я мог применить сортировку
Извините за сумборность изложения, дайте пинок в нужном направлении
Помогите решить: Задан массив, содержащий несколько нулевых элементов. Требуется сжать его, выбросив эти нулевые элементы.
Есть массив.Как из него удалить ячейки с повторяющимся ID.
Есть массив int [] array={1,2,3,4,5,6}
К каждому чётному числу массива включая 0, нужно прибавить 1.
Вот не как не пойму. Есть соображения у кого нибудь?
Есть массив int [] array={1,2,3,4,5,6}
К каждому чётному числу массива включая 0, нужно прибавить 1.
Вот не как не пойму. Есть соображения у кого нибудь?
Чёрт, коммент обрезался.
Примерно так.
Есть массив int [] array={1,2,3,4,5,6}
К каждому чётному числу массива включая 0, нужно прибавить 1.
Есть скрипт вывода изображения от времени дня!
Так вот подскажите пожалуйста как каждому изображению присвоить свой title='текст' ???
помогите пожалуйста вот двуммерный массив с 2 циклами
var myFamily = new Array(["t", "i", "m", "u", "r"], ["r", "e", "v", "i", "n"], ["a", "r", "t", "e", "m"], ["e", "l", "e", "n", "a"], ["r", "a", "i", "s", "a"]);
for (var i = 0; i < myFamily.length; i++) {
for (var j = 0; j < myFamily.length; j++) {
document.write(myFamily[i][j] + "");
}
}
он все буквы выодит столбиком, а нужно чтоб таблицей помогите пожалуйста!
Люди а подскажите как сделать перебор в обратную сторону в цикле без метода reverse ?
Вопрос такой: функция фозвращает массив:
var a = f_test (x)
function f_test {
if (x) {return [1,2,3];} else ????
}
как вернуть пустой массив в случае х=false: else return null; или как-то иначе?
У вас неправильно описана функция slice.
Функция на самом деле возвращает подмассив с индексами begin…end-1. Поправьте пожалуйста, а то я полчаса провозился, пока это выяснил опытным путём. Может это сэкономит время кому-нибудь.
Помогите. Не могу сделать массив с подсчетом кол-ва положительных элементов.
Вот что я сделал:
Function Pol()
{
var arr =[0,2,-12,-5,9,7];
var amount=0;
for(var i=0;i0)amount+=1;
alert('кол-во положительных='+amount);
}
"input type="button" value="Подсчитать количество положительных элементов" onclick="Pol();"
var arr=[];
alert(arr instance Array);//true
alert(arr instance Object);//false
var obj={};
alert(obj instance Array);//false
alert(obj instance Object);//true
Не ругайте JavaScript, Всё в нем логично)
Опечатка
var arr=[];
alert(arr instanceof Array);//true
alert(arr instanceof Object);//false
var obj={};
alert(obj instanceof Array);//false
alert(obj instanceof Object);//true
Не ругайте JavaScript, Всё в нем логично)
Добрый день! Хотелось бы по подробней узнать о создании массива из изображений. А то про это нигде особо не пишется. Что в этом коде можно поправить?
Добрый день! Хотелось бы по подробней узнать о создании массива из изображений. А то про это нигде особо не пишется. Что в этом коде можно поправить?
Помогите пожалуйста Из массива JJ(100) в массив NN(100) перенести числа(элементы массива): сначала нечетные, а затем четные.
Игорь, я согласна с Вами, но мне кажется, правильнее писать в кавычках, например, "У{{{{"
Такой проблема, как перебирать массив, если ключи у него заданные? То есть имеет вид:
обращение к элементу типа
канает
Ну и каким образом сделать динамическое создание ассоциативного массива, как например в php, делающееся следующим образом:
$array['динамическая переменная раз']['динамическая переменная два'] = value;
???
Вы ещё живы? Мне очень очень нужна помощь!!! Я не могу понять задачку.
Задача: В целочисленной последовательности есть нулевые элементы.
Создать массив из номеров этих элементов.
Помогите пожалуйста
Что это значит?
Как сделать так что бы 1 + 1 получался 2 а не 11
alert(a+b);
Показывает 11 а нужно 2
как можна написат цикл набарот пахоже
Подскажите пожалуйста, как найти количество положительных элементов одномерного массива?
Интересно, как такое вот чудо будет работать?
slice(begin[, end])
Если вы напишите slice(1[, 5]) - это будет полная белиберда.
Потому что правильно вот так:
slice(begin, end)
Например,
var str ="Вот такая строка"
str.slice(0,2) // "Во"
str.slice(1,-1) // "от такая строк"
Ребята, добрый день.
Че-то не могу сообразить, наверно, уработалась. Как ввести элементы массива через форму?
Вот моя конструкция в упрощенной форме (для одного элемента). Но ее результат indefined, несмотря на наличие value.
Вижу, что что-то не так, но не могу уловить мысль((
var FF = [];
.......................
document.write(FF[1])
Сделайте массив что-бы при смене сервера был новый массив куда подключаются боты и очещение старого масива с ботами
Приветствую! Помогите, пожалуйста, решить задачку.
Имеется массив (Array) и некая переменная (print), которой присвоено имя массива. Нужно извлечь данные из массива используя имя этого массива из переменной print.
Есть ли в js какой-либо аналог оператора диапазона? В нормальных языках вместо
[1,2,3,4,5]
можно написать[1..5]
…Ребята, помогите написать програмку!!
Згенерувати і вивести на екран масив з цілого числа n і випадкових чисел від -150 до 145. Число n вводить користувач. Знайти добуток номерів найменших елементів серед додатніх.
Здравствуйте. Как можно оптимизировать поиск элементов в массиве и минимизировать обращения к ним. То есть, если в массиве от 1 до 20 искать пропущенный элемент, например 7, как это сделать с минимумом обращений и как узнать какое количество этих обращений будет?
сложить числа до пропуска и после него. Разность и есть пропущенное число
Граждане знающие.
Существует ли шаблон для решения такой задачи:
- текстовый файл, в нём заголовок (текстовая информация);
- далее заголовок таблицы;
- и данные в таблице (числа).
Необходимо выбрать этот текстовый файл, спарсить его и записать в массив числа, для последующего оперирования цифр, а после выгрузить данные в экселевский файл.
Вот такой вот запрос.
Здравствуй, JS!))
Есть многомерный массив:
Как к каждому подмассиву присоединить соответствующий аудиофайл, чтобы при вызове он звучал?
Спасибо!