Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   метод forEach (https://javascript.ru/forum/misc/27018-metod-foreach.html)

9xakep 31.03.2012 11:16

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

Как выполнить?

nekto_O 31.03.2012 11:52

Цитата:

Сообщение от 9xakep
Как выполнить?

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

Точно не помню, но вроде в IE < 9 не работает, могу ошибаться...

Kolyaj 31.03.2012 11:54

http://alljs.ru/articles/array/iterators

9xakep 31.03.2012 12:02

Цитата:

Сообщение от nekto_O (Сообщение 165993)
так понятно будет?
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 :victory:
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:18

Я правильно понимаю, что 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)

Раед 31.03.2012 12:23

Цитата:

Сообщение от 9xakep
то мне по-любому придется печатать 3 аргумента

Ну при желании объект arguments к вашим услугам

9xakep 31.03.2012 12:35

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

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

monolithed 31.03.2012 12:36

Цитата:

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

Kolyaj же дал ссылку на подробное описание этих методов, неа?
Или тут

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

9xakep 31.03.2012 12:41

monolithed,
эм...так я прочитал ее и спрашиваю

monolithed 31.03.2012 12:43

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

alert([].map.call([1,2,3], function (i) {
    return i + i;
}));


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