masalibの日記

システム開発、運用と猫の写真ブログです

30秒で理解できるjavascriptが難しい・・・

github.com

30秒ぐらいで理解できるjavascriptと書いてあったのですが
5分ぐらいみたのですが、ワケガワカラナイヨ状態

f:id:masalib:20180228014717j:plain

n追加の引数を無視して、引数まで受け入れる関数を作成します。
提供された関数を、引数fnまで、with およびspread演算子()で呼び出します。

const ary = (fn, n) => (...args) => fn(...args.slice(0, n));

//例
const firstTwoMax = ary(Math.max, 2);

[[2, 6, 'a'], [8, 4, 6], [10]].map(x => firstTwoMax(...x));

本当に頭の上に?(はてなしかでない
アロー関数で作られているのを見るのが苦手!!アロー関数じゃない形にして解析する事にしました
変換ツールはかの有名なbabelです

babeljs.io

'use strict';

function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }

var ary = function ary(fn, n) {
  return function () {
    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    return fn.apply(undefined, _toConsumableArray(args.slice(0, n)));
  };
};
var firstTwoMax = ary(Math.max, 2);

[[2, 6, 'a'], [8, 4, 6], [10]].map(function (x) {
  return firstTwoMax.apply(undefined, _toConsumableArray(x));
});

30秒は無理!!

実は新人にむけていい教材がないのかなと探していたが
自分ができないという事が証明された~
コツコツ勉強していきます