метод forEach
Часто начал встречать подобный метод, особенно у ливаандриамарума, можете объяснить как он работает?
Вот например:
<script>
var a = [1,2,3]
a.forEach(function (/* что здесь за аргументы? */) {
// увеличить каждый элемент массива на 1
})
Как выполнить? |
Цитата:
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, Спасибо почитаю |
Я правильно понимаю, что 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)
|
Цитата:
|
<script>
var a = [1,2,3]
a.forEach(function () {
arguments[2][arguments[1]] +=1
})
alert(a)
</script>
Так что ли? Так мне легче уж аргументы написать чем так.. |
Цитата:
Или тут arguments[2][arguments[1]] += 1 |
monolithed,
эм...так я прочитал ее и спрашиваю |
Кстати можно так:
alert([].map.call([1,2,3], function (i) {
return i + i;
}));
|
Цитата:
|
monolithed,
Во, самый простой способ :D Тогда уж так:
<script>
alert([].map.call([1,2,3], []['constructor']['constructor']('i','return i + i; ')))
</script>
|
Цитата:
|
Maxmaxmахimus,
тогда уж лучше так:
Array.prototype.each = function (call) {
for ( var i = 0; i < this.length; i++ ) {
if ( call.call( this, i, this[i] ) === false ) return this;
}
return this;
}
внутри калбакаreturn false - break иначе перебираем дальше. |
Цитата:
|
Цитата:
и как отметил monolithed Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
|
| Часовой пояс GMT +3, время: 09:38. |