用lodash替换while循环

时间:2017-04-19 16:23:29

标签: javascript lodash

我试图在lodash找到一种方法来做到这一点:

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

实际代码正在跳过所有顶行,直到它在开头找不到#。我希望有一个更好的lodash方法,我可以做类似的事情

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

所以基本上是一个lodash方法来查找与某些查询不匹配的第一个索引。那存在吗?

3 个答案:

答案 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>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

假设行是一个数组。您正在寻找_.findIndex

答案 2 :(得分:0)

你可以编写一个特定的函数,这是lodash非常擅长的。

&#13;
&#13;
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
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
&#13;
&#13;
&#13;