2017-07-07 1 views
2

配列がより多く、そして要素を含み、nullでも定義されていないことを確認したいと思います。他の言葉では:私は代替を探していますJavaScript配列に複数の要素が含まれているかどうかを確認するにはlodashを使用しますか?

if(array && array.length > 1) 

これは読むのが良いでしょう。いくつかの要素をチェックするための同様の方法は

if(_.some(array)) 

あります:配列が含まれている場合

Lodashは少なくとも一つ要素をチェックするための方法を提供しますか?

残念ながら、次の方法が存在しません:まだ、

if(_.several(array)) 

if(_.many(array)) 

は、私は自分の拡張メソッドを記述する必要がありますか私はちょうどlodashコマンドを見つけられませんでしたか?

+3

> 1 'より多く読みやすいあなたがここにoverthinkingているように、その後' _.some(配列)は ' –

+1

が見えます。 '_.some'はあなたが言及した目的のためのものではありません。それははるかに強力です。 'array.length> 1'をラップする関数を書くことを目的としています。 –

+0

@Stoyan _.some(配列)はarray && array.length> 0と比較されます。私は左から右へ、そして "some"になったら、条件を知っています。そうでなければ、私は "長さ"に進み、さらには長さの後ろに来るものを確認する必要があります:<, > ===、... – Stefan

答えて

1

あなたはそのために自分のlodashのミックスインを作成することができます。

var myArray = [1, 2, 3]; 
var anotherArray = [4]; 

function several(array) { 
    return _.get(array, 'length') > 1 
} 

_.mixin({ 'several': several }); 

console.log(_.several(myArray)) // ==> true 
console.log(_.several(anotherArray)) // ==> false 

例:https://jsfiddle.net/ecq7ddey/

2
_.compact(array).length > 1 

コンパクトは、偽の値が削除された(false、null、0、 ""、未定義、およびNaN)配列を返します。

1

これは_.some()のように動作しますatLeast()関数であるが、分番号を受け付けます。コールバックがminと同じ回数でtrueを返す場合、関数はtrueを返します。私 `Array.lengthとのため

// the parameters order is to maintain compatability with lodash. A more functional order would be - cb, min, arr 
 
function atLeast(arr, min, cb) { 
 
    cb = cb || _.identity; // default is like some 
 
    
 
    var counter = 0; 
 
    return _.some(arr, function(v) { 
 
    cb(v) && counter++; 
 
    
 
    return counter === min; 
 
    }); 
 
} 
 

 
_.mixin({ 'atLeast': atLeast }); 
 

 
var arr1 = [1, 0, null, undefined]; 
 
var arr2 = [null, undefined, 0]; 
 

 
var isNotNil = _.negate(_.isNil); // not null or undefined 
 

 
console.log(_.atLeast(arr1, 2, isNotNil)); 
 

 
console.log(_.atLeast(arr2, 2, isNotNil));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

関連する問題