我试图在lodash找到一种方法来做到这一点:
var start = 0;
while (rows[start].substring(0, 1) === "#") {
start++;
}
实际代码正在跳过所有顶行,直到它在开头找不到#。我希望有一个更好的lodash方法,我可以做类似的事情
var start = _.someMethod(function (str) {
return str.substring(0, 1) === "#"
})
所以基本上是一个lodash方法来查找与某些查询不匹配的第一个索引。那存在吗?
答案 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;
答案 1 :(得分:0)
假设行是一个数组。您正在寻找_.findIndex
答案 2 :(得分: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
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
&#13;