4549


lodash.js を利用して、`ある1つの配列が持つすべての値は同値か、否か` という判定をしようとしています。（複数の配列同士の比較ではありません）

ドキュメントを見た限りではそのような機能を提供するメソッドはなく、以下のように実現するしかない、と考えたのですが、よりベストな手段はありますでしょうか。  
（万が一、ドキュメントで見落としていた場合は大変申し訳ありません）

[code]

    var sameValCount = _([1, 2, 3])
                        .union()
                        .size();
    console.log(sameValCount > 1 ? false : true); // false
    
    var sameValCount2 = _([1, 1, 1])
                        .union()
                        .size();
    console.log(sameValCount2 > 1 ? false : true); // true
    
[/code]

> Lo-Dash documentation  
>  <https://lodash.com/docs>


CC BY-SA 3.0
2015-01-14T09:34:45.833
4545
2015-01-14T11:58:47.213
2015-01-14T11:58:47.213
5827
5827
question
javascript
lodash.js を利用し、ある1つの配列が持つすべての値は同値か否かを判定したい


「 **配列の持つ値が全て同一か否か** 」ですか。（２配列の比較と勘違いしていました。）ドキュメントを見てもなさそうなので、
[_.isEqual()](https://lodash.com/docs#isEqual) と、
[_.all()](https://lodash.com/docs#all) を組み合わせて作ってみました。

この `allValuesSame()` 関数は、配列を走査し最初に等しくない要素が現れたときに諦めて false を返します。

[code]

    // Check if all the values are the same.
    function allValuesSame( array) {
      return _.all( array, function(e) { return _.isEqual( array[0], e);});
    }
    
    var array1 = [1, 1, 1, 1, 1];
    var array2 = [1, 1, 1, 9, 1];
    var array3 = [['hello', 'world', { one: 'uno'}], 
                  ['hello', 'world', { one: 'uno'}], 
                  ['hello', 'world', { one: 'uno'}]];
    var array4 = [['hello', 'world', { one: 'uno'}], 
                  ['hello', 'world', { one: 'dos'}], 
                  ['hello', 'world', { one: 'uno'}]];
    var array5 = [];
    var array6 = ['alone'];
    
    window.alert( "array1 => " + allValuesSame( array1)); // => true
    window.alert( "array2 => " + allValuesSame( array2)); // => false
    window.alert( "array3 => " + allValuesSame( array3)); // => true
    window.alert( "array4 => " + allValuesSame( array4)); // => false
    window.alert( "array5 => " + allValuesSame( array5)); // => true
    window.alert( "array6 => " + allValuesSame( array6)); // => true
[/code]

[code]

    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"></script>
[/code]


CC BY-SA 3.0
2015-01-14T10:17:34.660
4549
2015-01-14T11:05:38.383
2015-01-14T11:05:38.383
4978
4978
4545
answer