Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.03.2012, 11:16
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

метод forEach
Часто начал встречать подобный метод, особенно у ливаандриамарума, можете объяснить как он работает?
Вот например:
<script>
var a = [1,2,3]
a.forEach(function (/* что здесь за аргументы? */) {
// увеличить каждый элемент массива на 1
})

Как выполнить?
__________________
оляля, ололо
Ответить с цитированием
  #2 (permalink)  
Старый 31.03.2012, 11:52
С++/C# modest developer
Отправить личное сообщение для nekto_O Посмотреть профиль Найти все сообщения от nekto_O
 
Регистрация: 07.11.2011
Сообщений: 244

Сообщение от 9xakep
Как выполнить?
так понятно будет?
var a = [1,2,3];
a.forEach(function(el, idx, a) {
    console.log('a['+idx+'] = '+el+' in ['+a+']');
});

Точно не помню, но вроде в IE < 9 не работает, могу ошибаться...
Ответить с цитированием
  #3 (permalink)  
Старый 31.03.2012, 11:54
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

http://alljs.ru/articles/array/iterators
Ответить с цитированием
  #4 (permalink)  
Старый 31.03.2012, 12:02
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Сообщение от nekto_O Посмотреть сообщение
так понятно будет?
var a = [1,2,3];
a.forEach(function(el, idx, a) {
    console.log('a['+idx+'] = '+el+' in ['+a+']');
});

Точно не помню, но вроде в IE < 9 не работает, могу ошибаться...
ага, все кажется разобрался)
То есть первый аргумент, это элемент с индексом idx, второй это как i в for(i=0;i<arr.length;i++). И третий это непосредтсвенно сам массив. Thanks
var a = [1,2,3];
a.forEach(function(el, idx, a) {
    a[idx] += 1
    console.log(a[idx])
});

А если мы укажем:
var a = [1,2,3]
a.forEach(function (a,b) { /* это будут el и idx? То есть если нужно получить массив("а" у вас, то мне по-любому придется печатать 3 аргумента? */ 
})

Kolyaj,
Спасибо почитаю
__________________
оляля, ололо

Последний раз редактировалось 9xakep, 31.03.2012 в 12:06.
Ответить с цитированием
  #5 (permalink)  
Старый 31.03.2012, 12:18
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Я правильно понимаю, что map это тупое перебирание всех элементов и что-то с ними делание?
var a = [1,2,3]
var b = a.map(function(c) {
return c+1
})
alert(b)
var e  = a.map(function(v) {
return v + 'c'
})
alert(e)
__________________
оляля, ололо
Ответить с цитированием
  #6 (permalink)  
Старый 31.03.2012, 12:23
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

Сообщение от 9xakep
то мне по-любому придется печатать 3 аргумента
Ну при желании объект arguments к вашим услугам

Последний раз редактировалось Раед, 22.04.2012 в 01:10.
Ответить с цитированием
  #7 (permalink)  
Старый 31.03.2012, 12:35
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

<script>
var a = [1,2,3]
a.forEach(function () {
arguments[2][arguments[1]] +=1
})
alert(a)
</script>

Так что ли? Так мне легче уж аргументы написать чем так..
__________________
оляля, ололо

Последний раз редактировалось 9xakep, 31.03.2012 в 12:38.
Ответить с цитированием
  #8 (permalink)  
Старый 31.03.2012, 12:36
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от 9xakep
Я правильно понимаю, что map это тупое перебирание всех элементов и что-то с ними делание?
Kolyaj же дал ссылку на подробное описание этих методов, неа?
Или тут

arguments[2][arguments[1]] += 1

Последний раз редактировалось monolithed, 31.03.2012 в 12:39.
Ответить с цитированием
  #9 (permalink)  
Старый 31.03.2012, 12:41
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

monolithed,
эм...так я прочитал ее и спрашиваю
__________________
оляля, ололо
Ответить с цитированием
  #10 (permalink)  
Старый 31.03.2012, 12:43
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Кстати можно так:

alert([].map.call([1,2,3], function (i) {
    return i + i;
}));
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объект не поддерживает это свойство или метод load_081112_0953.js 1auto1 Общие вопросы Javascript 1 13.04.2011 22:09
Ошибка PHP - foreach ВэйДлин Серверные языки и технологии 4 23.12.2010 00:04
Формирование array, передача и foreach Vulkan AJAX и COMET 4 15.07.2010 13:16
Как узнать у какого объекта вызван метод. Scalar Events/DOM/Window 4 26.03.2010 11:10
Добавить свой метод к элементу alekciy Events/DOM/Window 6 16.02.2009 19:29