Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Добавить цикличным методом по еденице к каждому эллементу array (https://javascript.ru/forum/misc/26132-dobavit-ciklichnym-metodom-po-edenice-k-kazhdomu-ehllementu-array.html)

Nadine 27.02.2012 13:56

Добавить цикличным методом по еденице к каждому эллементу array
 
Подскажите каким методом сделать элементарное задание.
К примеру есть
var array=[2, 3, 4, 5, 6];
Каким видом цикла можно каждый элемент array увеличить на 1?
чтоб в итоге было:
3
4
5
6
7
?

рони 27.02.2012 14:03

Nadine,
2 + 1 = 2 ???

Nadine 27.02.2012 14:11

ой.. очепятка

рони 27.02.2012 14:14

Nadine,
значения массива идут по порядку ? и возрастают до увеличения значения на 1 ? цикл обязателен?

Nadine 27.02.2012 14:20

ну цифры могут быть любыми, главное чтоб к каждому был +1.
Ну думаю да, цикл обязателен.
А как можно сделать без цикла? Чтоб к примеру если я что то добавлю в этот массив (новые значения) , то чтоб все считалось без проблем

рони 27.02.2012 14:36

Nadine,
var arr=[2, 3, 4, 5, 6],l = arr.length;
arr[l-1]=arr.shift()+l
alert(arr)

а в чём проблема то у вас перебрать элементы массива циклом?

Mахmaxmaximus 27.02.2012 15:37

рони,
знаешь толк XD

Nadine 27.02.2012 16:09

Цитата:

Сообщение от рони (Сообщение 160196)
Nadine,
var arr=[2, 3, 4, 5, 6],l = arr.length;
arr[l-1]=arr.shift()+l
alert(arr)

а в чём проблема то у вас перебрать элементы массива циклом?

вау.. спасибо большое. метод shift() вобще не знала. сенк.. я только учусь)

Mахmaxmaximus 27.02.2012 16:18

Nadine,
я уточню, вот это он просто сместил элементы.
физически он их не изменил, это такая оптимизация типа.

если тебе нужно пройтись по всем элементам массива? то просто используй этот метод:

var arr = [1,2,3];
alert(arr);

arr.forEach(function(a,b,c){
c[b] = a + 1;
});

alert(arr)


где
a - значение текущей ячейки
b - индекс текущей ячейки
с - ссылка на перебираемый массив

рони 27.02.2012 16:34

Цитата:

Сообщение от Mахmaxmaximus
этот метод

не кросбраузерный на даныый момент
можно простым перебором
var arr=[2, 3, 4, 5, 6];
function g(arr,n)
{
var a = [];
n = n || 1;
for (var i=0; i<arr.length; i++)  {
a[i]=arr[i]+n
}
return a
}
alert(g(arr));
alert(g(arr,2));

Mахmaxmaximus 27.02.2012 16:42

рони,
нельзя к сожалению, иначе бы я перебор и посоветовал.

var arr = [1,2,3];
delete arr[1];

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

рони 27.02.2012 17:22

Цитата:

Сообщение от Mахmaxmaximus
нельзя к сожалению, иначе бы я перебор и посоветовал.

немогли бы вы пояснить почему нельзя использовать перебор???

T-sh 27.02.2012 17:31

весело тут у вас :)) этож надо так над девушкой издеваться))))

var arr = [1,2,3,4,5];
var i = arr.length-1;
while (i>=0){
arra[i] = arra[i]+1;
i --;
}

рони 27.02.2012 17:39

T-sh,
ниже ваш код без ошибок и покороче )))
var arr = [1,2,3,4,5],i = arr.length;
while (i--){
arr[i]++;
}
alert(arr)

nikita.mmf 27.02.2012 18:11

А почему никто не предложил вариант, через map
[1,2,3,4,5].map(function( item ){ return item++; });

Метод естественно не кроссбраузерный.

T-sh 27.02.2012 18:30

Цитата:

Сообщение от рони (Сообщение 160256)
T-sh,
ниже ваш код без ошибок и покороче )))
var arr = [1,2,3,4,5],i = arr.length;
while (i--){
arr[i]++;
}
alert(arr)

я в курсе, но понять суть топикстартеру будет легче из моего "громоздкого" примера :) иначе будет много встречных вопросов)

T-sh 27.02.2012 18:31

черт.. опечатки не заметил в своем примере..

arra = arr :) руки уже не слушаются.

Aetae 27.02.2012 18:52

Цитата:

Сообщение от рони (Сообщение 160256)
T-sh,
ниже ваш код без ошибок и покороче )))
var arr = [1,2,3,4,5],i = arr.length;
while (i--){
arr[i]++;
}
alert(arr)

Так круче.))
var arr = [1,2,3,4,5], i = arr.length;

while( i-- ) arr[i]++ ;

alert(arr)

monolithed 27.02.2012 18:53

Цитата:

Сообщение от рони
ниже ваш код без ошибок и покороче

Цитата:

Сообщение от Aetae
Так круче.))

Так:
var arr = [1,2,3,4,5], i = arr.length;

while (arr[--i]++);

alert(arr);

:)

Aetae 27.02.2012 19:00

Цитата:

Сообщение от monolithed (Сообщение 160273)
Так:
var arr = [1,2,3,4,5], i = arr.length;

while (arr[--i]++);

alert(arr);

:)

Точняк.))

...а, хотя не, не катит:( :
var arr = [1,2,3,4,5,0], i = arr.length;

while (arr[--i]++);

alert(arr);


Часовой пояс GMT +3, время: 01:52.