Цитата:
// мини j :-) function $(name, element) { var el = (element || document).querySelectorAll(name); return el ? (el.length > 1 ? Array.apply(null, el) : el[0]) : []; } |
Цитата:
var arr = [1, 2, 3]; var arr1 = ["a", "b", "c"]; var mas = arr1.map.call(arr, function (el) { return el; }); alert(mas); |
if (!Array.prototype.map) { Array.prototype.map = function (fn, scope) { var tmp = []; for (var i = 0, len = this.length; i < len; ++i) { tmp.push(fn.call(scope, this[i], i, this)); } return tmp; } } var arr = [1, 2, 3]; var arr1 = ["a", "b", "c"]; var mas = arr1.map.call(arr, function (el) { return el; }); alert(mas); var sas = arr.map(function (el) { return ++el; }); alert(sas);:dance: |
bes, зачем здесь:
var mas = arr1.map.call(arr, function (el) { return el; }); arr1? Чем он "лучше" чем Array.prototype или []? Он же никак никак не влияет на выполнение функции и к нему внутри функции кроме как по имени не обратишься. Или я ошибаюсь? Poznakomlus на developer.mozilla.org я прочитал что твоя первая конструкция в посте №23 это полифилл. Как я могу проверить работоспособность твоего кода (в каких случаях метод map будет отсутствовать)? Мне нужен старый браузер или в коде как-то объявить версию языка? |
Цитата:
Цитата:
для проверки убери проверку на существование, метод map будет переопределён |
Я думал что к этому массиву можно обратиться внутри функции через this
|
Цитата:
|
Чтобы установить свой контекст нужно третьим аргументом у метода call установить необходимый объект.
Я хочу посредством этой конструкции сложить элементы двух массивов без цикла. |
Цитата:
навскиду можно так var arr1 = [1, 2, 3]; var arr2 = ["a", "b", "c"]; var result = arr1.map(function (val, index) { return val + arr2[index]; }); alert(result); |
bes,
Да, у map. Проглядел. Спасибо. |
Часовой пояс GMT +3, время: 08:18. |