Заполнение другого массива из массива - Javascript
Очень простая вещь, которую я пытаюсь сделать в JS (присваивать значения одного массива другому), но почему-то значение массива bar
вообще не отображается.
Первое, что я пробовал, конечно, было просто bar = ar;
- не работало, поэтому я пробовал вручную прокручивать... все равно не работает.
Я не задираю причуды Javascript! Пожалуйста, помогите!
var ar=["apple","banana","canaple"];
var bar;
for(i=0;i<ar.length;i++){
bar[i]=ar[i];
}
alert(ar[1]);
А вот вот скрипка: http://jsfiddle.net/vGycZ/
(Вышеприведенное упрощение. Фактический массив является многомерным.)
Ответы
Ответ 1
Ваш код не работает, потому что вы не инициализируете bar
:
var bar = [];
Вы также забыли объявить переменную i
, которая может быть проблематичной, например, если код внутри функции, i
в конечном итоге станет глобальной переменной (всегда используйте var
:).
Но вы можете избежать цикла, просто используя метод slice
, чтобы создать копию вашего первого массива:
var arr = ["apple","banana","canaple"];
var bar = arr.slice();
Ответ 2
У вас есть две проблемы:
Сначала вам нужно инициализировать bar
как массив:
var bar = [];
Тогда arr
должно быть ar
здесь:
for(i=0;i<arr.length;i++){
Затем вы получите предупреждение о своем банане:)
Ответ 3
copy-or-clone-javascript-array-object
var a = [ 'apple', 'orange', 'grape' ];
b = a.slice(0);
Ответ 4
У вас есть ошибочная переменная ar
Попробуйте это
for(i=0;i<ar.length;i++){
bar[i]=ar[i];
}
alert(ar[1]);
Ответ 5
Проблема, вероятно, здесь, в инструкции цикла for:
for(i=0;i<ar.length;i++){
bar[i]=ar[i];
}
alert(ar[1]);
Вам нужно зафиксировать ar.length
вместо arr.length.
И лучше инициализировать бар как: var bar = []
.
Ответ 6
В вашем коде переменная arr
в цикле for не совпадает с вашим исходным массивом ar
: у вас слишком много r
.