Еще маленькая ошибка (сам только что у себя заметил):
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, время: 01:20. |