アンダスコ/Lodashは必要ありません.


You don't(may not)need Lodash/Underscore
LodashとUnderscoreは非常に優れた現代JavaScriptのツールセットフレームであり、それらは先端開発者によって広く使われています.しかし、現在は近代的なブラウザに対して開発を行っています.多くの場合、私達が利用しているUnderscoreの方法はES 5とES 6によってサポートされています.もし私達が私達のプロジェクトにできるだけ依存を減らしてほしいなら、目標ブラウザによってLodashやUnderscoreを選択することができます.
開発者の声
Make use of native JavaScript object and array utilities before going big.Cody lindley,Author of jQuery Cookbook,JavaScript Elightenment
You probably don't need Lodash.Nice List of JavaScript methods which You can use nativally.Daniel Lamb,Computer Scintist,Technical Review of the JavaScrett Ninja,Funtional Progingja
I gusess not,but I want it.Tero Paviainen,Author of build-your-own-anglar
I'll admit,I've been guity of overusing.Excellent reource.therebelrobot,Maker of web things,Facilittor for Node.js/io.js
Quick links
  • _.each
  • _.map
  • _.every
  • _.some
  • _.reduce
  • _.reduceRight
  • _.filter
  • _.find
  • _.findIndex
  • _.indexOf
  • _.lastIndexOf
  • _.includes
  • _.keys
  • _.size
  • _.isNaN
  • _.reverse
  • _.ジョイン
  • _.toUpper
  • _.タワー
  • _.trim
  • _.repeat
  • _.after
  • _.each
    一連の要素を巡回し、フィードバック処理方程式を呼び出します.Iterates over a list of element,yielding each in turn to an iteratee function.
    // Underscore/Lodash
    _.each([1, 2, 3], function(value, index) {
      console.log(value);
    });
    // output: 1 2 3
    
    // Native
    [1, 2, 3].forEach(function(value, index) {
      console.log(value);
    });
    // output: 1 2 3
    Browser Support

    1.5✔
    9✔


    ⬆ back to top
    _.map
    あるリストの要素を新しいリストにマッピングします.
    // Underscore/Lodash
    var array1 = [1, 2, 3];
    var array2 = _.map(array1, function(value, index) {
      return value*2;
    });
    console.log(array2);
    // output: [2, 4, 6]
    
    // Native
    var array1 = [1, 2, 3];
    var array2 = array1.map(function(value, index) {
      return value*2;
    });
    console.log(array2);
    // output: [2, 4, 6]
    Browser Support

    1.5✔
    9✔


    ⬆ back to top
    _.every
    配列のすべての要素が指定された関数によってテストされましたか?
    // Underscore/Lodash
    function isLargerThanTen(element, index, array) {
      return element >=10;
    }
    var array = [10, 20, 30];
    var result = _.every(array, isLargerThanTen);
    console.log(result);
    // output: true
    
    // Native
    function isLargerThanTen(element, index, array) {
      return element >=10;
    }
    
    var array = [10, 20, 30];
    var result = array.every(isLargerThanTen);
    console.log(result);
    // output: true
    Browser Support

    1.5✔
    9✔


    ⬆ back to top
    _.そして私
    シーケンスに要素が存在するかどうかを判断し、与えられた方程式の条件を満たす.
    // Underscore/Lodash
    function isLargerThanTen(element, index, array) {
      return element >=10;
    }
    var array = [10, 9, 8];
    var result = _.some(array, isLargerThanTen);
    console.log(result);
    // output: true
    
    // Native
    function isLargerThanTen(element, index, array) {
      return element >=10;
    }
    
    var array = [10, 9, 8];
    var result = array.some(isLargerThanTen);
    console.log(result);
    // output: true
    Browser Support

    1.5✔
    9✔


    ⬆ back to top
    _.reduce
    1つの関数をアキュムレータとして受信し、配列内の各値(左から右へ)が縮小され、最終的には1つの値になります.
    // Underscore/Lodash
    var array = [0, 1, 2, 3, 4];
    var result = _.reduce(array, function (previousValue, currentValue, currentIndex, array) {
      return previousValue + currentValue;
    });
    console.log(result);
    // output: 10
    
    // Native
    var array = [0, 1, 2, 3, 4];
    var result = array.reduce(function (previousValue, currentValue, currentIndex, array) {
      return previousValue + currentValue;
    });
    console.log(result);
    // output: 10
    Browser Support

    3.0✔
    9✔
    10.5
    4.0
    ⬆ back to top
    _.reduceRight
    一つの関数をアキュムレータとして受け入れ、各値(右から左、つまり最後まで)を一つの値に縮小します.(reduce()の実行方向とは反対)
    // Underscore/Lodash
    var array = [0, 1, 2, 3, 4];
    var result = _.reduceRight(array, function (previousValue, currentValue, currentIndex, array) {
      return previousValue - currentValue;
    });
    console.log(result);
    // output: -2
    
    // Native
    var array = [0, 1, 2, 3, 4];
    var result = array.reduceRight(function (previousValue, currentValue, currentIndex, array) {
      return previousValue - currentValue;
    });
    console.log(result);
    // output: -2
    Browser Support

    3.0✔
    9✔
    10.5
    4.0
    ⬆ back to top
    _.filter
    指定された関数を使用して、すべての要素をテストし、テストされたすべての要素を含む新しい配列を作成します.
    // Underscore/Lodash
    function isBigEnough(value) {
      return value >= 10;
    } 
    var array = [12, 5, 8, 130, 44];
    var filtered = _.filter(array, isBigEnough);
    console.log(filtered);
    // output: [12, 130, 44]
    
    // Native
    function isBigEnough(value) {
      return value >= 10;
    } 
    var array = [12, 5, 8, 130, 44];
    var filtered = array.filter(isBigEnough);
    console.log(filtered);
    // output: [12, 130, 44]
    Browser Support

    1.5✔
    9✔


    ⬆ back to top
    _.find
    配列内の試験条件を満たす要素を返します.条件を満たす要素がない場合は、undefinedを返します.
    // Underscore/Lodash
    var users = [
      { 'user': 'barney',  'age': 36, 'active': true },
      { 'user': 'fred',    'age': 40, 'active': false },
      { 'user': 'pebbles', 'age': 1,  'active': true }
    ];
    
    _.find(users, function(o) { return o.age < 40; });
    // output: object for 'barney'
    
    // Native
    var users = [
      { 'user': 'barney',  'age': 36, 'active': true },
      { 'user': 'fred',    'age': 40, 'active': false },
      { 'user': 'pebbles', 'age': 1,  'active': true }
    ];
    
    users.find(function(o) { return o.age < 40; });
    // output: object for 'barney'
    Browser Support
    45.0
    25.0✔
    Not supported
    Not supported
    7.1
    ⬆ back to top
    _.findIndex
    指定された要素の索引を検索します.指定された要素が見つからない場合は、-1を返します.
    // Underscore/Lodash
    var users = [
      { 'user': 'barney',  'age': 36, 'active': true },
      { 'user': 'fred',    'age': 40, 'active': false },
      { 'user': 'pebbles', 'age': 1,  'active': true }
    ];
    
    var index =  _.findIndex(users, function(o) { return o.age >= 40; });
    console.log(index);
    // output: 1
    
    // Native
    var users = [
      { 'user': 'barney',  'age': 36, 'active': true },
      { 'user': 'fred',    'age': 40, 'active': false },
      { 'user': 'pebbles', 'age': 1,  'active': true }
    ];
    
    var index =  users.findIndex(function(o) { return o.age >= 40; });
    console.log(index);
    // output: 1
    Browser Support
    45.0
    25.0✔
    Not supported
    Not supported
    7.1
    ⬆ back to top
    _.indexOf
    指定された値が文字列オブジェクトで最初に発生する位置を返します.from Index位置から検索を開始し、存在しない場合は-1を返します.
    // Underscore/Lodash
    var array = [2, 9, 9];
    var result = _.indexOf(array, 2);    
    console.log(result); 
    // output: 0
    
    // Native
    var array = [2, 9, 9];
    var result = array.indexOf(2);    
    console.log(result); 
    // output: 0
    Browser Support

    1.5✔
    9✔


    ⬆ back to top
    _.lastIndexOf
    指定された要素(すなわち有効なJavaScript値または変数)の配列の最後のインデックスを返します.存在しない場合は-1を返します.配列の後ろから前へ検索して、from Indexから開始します.
    // Underscore/Lodash
    var array = [2, 9, 9, 4, 3, 6];
    var result = _.lastIndexOf(array, 9);    
    console.log(result); 
    // output: 2
    
    // Native
    var array = [2, 9, 9, 4, 3, 6];
    var result = array.lastIndexOf(9);    
    console.log(result); 
    // output: 2
    Browser Support


    9✔


    ⬆ back to top
    _.includes
    要素がリストにあるかどうかを判断します.
    var array = [1, 2, 3];
    // Underscore/Lodash - also called with _.contains
    _.includes(array, 1);
    // → true
    
    // Native
    var array = [1, 2, 3];
    array.includes(1);
    // → true
    Browser Support
    47✔
    43✔
    Not supported
    34
    9
    ⬆ back to top
    _.keys
    あるオブジェクトの列挙可能なキー名を返します.
    // Underscore/Lodash 
    var result = _.keys({one: 1, two: 2, three: 3});
    console.log(result);
    // output: ["one", "two", "three"]
    
    // Native
    var result2 = Object.keys({one: 1, two: 2, three: 3});
    console.log(result2); 
    // output: ["one", "two", "three"]
    Browser Support
    5✔
    4.0✔
    9
    12
    5
    ⬆ back to top
    _.size
    集合サイズを返します.
    // Underscore/Lodash
    var result = _.size({one: 1, two: 2, three: 3});
    console.log(result);
    // output: 3
    
    // Native
    var result2 = Object.keys({one: 1, two: 2, three: 3}).length;
    console.log(result2); 
    // output: 3
    Browser Support
    5✔
    4.0✔
    9
    12
    5
    ⬆ back to top
    _.isNaN
    NaNかどうか判断する
    // Underscore/Lodash
    console.log(_.isNaN(NaN));
    // output: true
    
    // Native
    console.log(isNaN(NaN));
    // output: true
    
    // ES6
    console.log(Number.isNaN(NaN));
    // output: true
    MDN:
    In cocococommparion to the global isNaN() function、Number.isNaN() doesn't suffer the problm of forcefully convertititing the parameterto a number.This means itisisis safeto pass values thwowould normalalalalalalalalalalallyconvert 2445454545454545454545totototosasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasathat are also NaN、return true.Number.isNaN()
    Voice from the Lodash author:
    Lodash's NaN is equiv to ES 6 NaN which is different than the global _.isNaN.---jdalton
    Browser Support for Number.isNaN




    Browser Support for isNaN25
    15
    Not supported

    9
    ⬆ back to top
    _.逆転セisNaNは、シーケンスを逆にする.
    // Lodash
    var array = [1, 2, 3];
    console.log(_.reverse(array));
    // output: [3, 2, 1]
    
    // Native
    var array = [1, 2, 3];
    console.log(array.reverse());
    // output: [3, 2, 1]
    Voice from the Lodash author:
    Lodash's Number.isNaN just cals Lodash only and enables compsition like _.reverseIt's exposed on_because previousy、like Array#reverse、it was only exposed in the chaining syntax.
    ---Jdalton
    Browser Support
    1.0✔
    1.0✔
    5.5✔


    ⬆ back to top
    _.ジョン_.map(arrays, _.reverse).は、1つのシーケンスを文字列に変換する.
    // Lodash
    var result = _.join(['one', 'two', 'three'], '--');
    console.log(result);
    // output: 'one--two--three'
    
    // Native
    var result = ['one', 'two', 'three'].join('--');
    console.log(result)
    // output: 'one--two--three'
    Browser Support
    1.0✔
    1.0✔
    5.5✔


    ⬆ back to top
    _.トップバッターUnderscoreは文字列を大文字にする.
    // Lodash
    var result = _.toUpper('foobar');
    console.log(result);
    // output: 'FOOBAR'
    
    // Native
    var result = 'foobar'.toUpperCase();
    console.log(result);
    // output: 'FOOBAR'
    Browser Support





    ⬆ back to top
    _.タワーLodash onlyは文字列を小文字に変更する.
    // Lodash
    var result = _.toLower('FOOBAR');
    console.log(result);
    // output: 'foobar'
    
    // Native
    var result = 'FOOBAR'.toLowerCase();
    console.log(result);
    // output: 'foobar'
    Browser Support





    ⬆ back to top
    _.trimLodash onlyは文字列の開始の空白を消去する.
    // Lodash
    var result = _.trim(' abc ');
    console.log(result);
    // output: 'abc'
    
    // Native
    var result = ' abc '.trim();
    console.log(result);
    // output: 'abc'
    Browser Support
    5.0✔
    3.5✔
    9.0✔
    10.5✔
    5.0✔
    ⬆ back to top
    _.repeatLodash onlyは文字列の作成を繰り返す.
    // Lodash
    var result = _.repeat('abc', 2);
    // output: 'abcabc'
    
    // Native
    var result = 'abc'.repeat(2);
    console.log(result);
    // output: 'abcabc'
    Browser Support
    41✔
    24.✔
    Not supported
    Not supported
    9
    ⬆ back to top
    _.アフターサービスLodash onlyは、指定されたカウンタを通過した後に呼び出される方程式を作成する.
    var notes = ['profile', 'settings'];
    // Underscore/Lodash
    var renderNotes = _.after(notes.length, render);
       notes.forEach(function(note) {
       console.log(note);
       renderNotes();
    });
    
     // Native
    notes.forEach(function(note, index) {
     console.log(note);
     if (notes.length === (index + 1)) {
       render();
     }
    });
    Browser Support





    ⬆ back to top
    Reference
  • Mozilla Developer Network
  • Underscore.js
  • Lodash.js
  • Inspired by:
  • You-Dot-Need-jQuery
  • Rui'sブログ