Еще маленькая ошибка (сам только что у себя заметил):
var r = (new Array(5)).map(function(I, i) {
return i;
});
alert(r.length);
Выводит "0", при нативной реализации выводит "5". Ну и проверки на (forEach, map, filter, every, some) и (reduce, reduceRight), возможно, достаточно делать по одной на всех:
if (!('forEach' in arrayProto)) {
arrayProto.forEach = function() {/* ..... */};
arrayProto.map = function() {/* ..... */};
arrayProto.filter = function() {/* ..... */};
arrayProto.every = function() {/* ..... */};
arrayProto.some = function() {/* ..... */};
}
if (!('reduce' in arrayProto)) {
arrayProto.reduce = function() {/* ..... */};
arrayProto.reduceRight = function() {/* ..... */};
}
|
Цитата:
Цитата:
|
Цитата:
var range = [], i = 10;
while (i) {
range[--i] = i + 1;
}
alert(range);
хотя и так нормально, в общем вечер свободный, вот и маюсь. |
А чем Array.range не угодил? Он же для перебора чисел по порядку и придуман.
|
Цитата:
|
Цитата:
Может убрать if(a in array)? Что-то ща пытаюсь представить зачем эта проверка нужна, чет туго. |
Пару часов назад запушил исправленную версию.
Цитата:
|
Цитата:
var t = new Array(5); alert(t.length+'\n'+t[0]); var t = []; t[0] = 1; t[100] =1; t.length Стандартным методам походу плевать undefined там или что другое...
var r = new Array(5);
r[2] = 1;
var t = r.map(function(c, i, m) {
return ++m[i];
})
t.length // стандарт 5, с проверкой 3
Цитата:
|
Цитата:
var t = new Array(5); alert(t.length+'\n'+t["vasyaPupkin"]); |
всё я догнал зачем такие сложности.
Стандартная функция не вызывает fn если элемент undefined.
var t = new Array(5);
t[1] = 1;
t.map(function(c, i) {alert(i); return 2;});
|
| Часовой пояс GMT +3, время: 22:54. |