2017-04-19 117 views
0

我試圖找到一個lodash辦法做到這一點替換:while循環與lodash

var start = 0; 
while (rows[start].substring(0, 1) === "#") { 
    start++; 
} 

的實際代碼跳過所有頂級行,直到它沒有找到一個#開頭。我希望有,我可以做類似

var start = _.someMethod(function (str) { 
    return str.substring(0, 1) === "#" 
}) 

所以基本上一個lodash方法來查找不符合某些查詢的第一個索引更好一點lodash方法。這是否存在?

+0

注意,如果所有的行以#開頭的代碼書面將拋出。 –

+0

總的來說,這是一個簡化的版本,但謝謝指出,以防萬一:) –

回答

4

有一個恰當的名字_.findIndex()

var rows = [ "#zero", "#one", "#two", "three", "#four" ]; 
 

 
var index = _.findIndex(rows, function (str) { 
 
    return str.charAt(0) !== "#"; 
 
}); 
 

 
console.log(index); // 3
<script src="https://cdn.jsdelivr.net/lodash/4.12.0/lodash.min.js"></script>

0

您可以編寫一個特定的函數,這是lodash非常擅長的。

var rows = ['#zero', '#one', '#two', 'three', '#four']; 
 
var startsWithHash = _.ary(_.partialRight(_.startsWith, '#'), 1); 
 
var notStartsWithHash = _.negate(startsWithHash); 
 
var findIndexNotStartsWithHash = _.ary(_.partialRight(_.findIndex, notStartsWithHash), 1); 
 
var index = findIndexNotStartsWithHash(rows); 
 
console.log(index); // 3
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>