我有一个数组的数组:
[
[0,0],
[0,0],
[3,2],
[5,6],
[15,9],
[0,0],
[7,23],
]
我可以用.indexOf(0)
这样的东西如果我想找到第一个零值的索引,但是我如何找到第一个非零值的索引或者符合某些标准的索引?
它可能看起来像.indexOf(function(val){ return val[0] > 0 || val[1] > 0;})
,但不支持这个
我如何以最优雅的方式解决这个问题?
我如何以最优雅的方式解决这个问题?
最好的解决方案是使用本地ES6数组方法.findIndex
(或Lodash/Underscore _.findIndex
)。
var index = yourArr.findIndex(val=>val[0] > 0 || val[1] > 0)
此代码使用ES6箭头函数,相当于:
var index = yourArr.findIndex(function (val) {
return val[0] > 0 || val[1] > 0;
});
您当然可以使用.some
方法来检索索引,但是这种解决方案并不优雅。
关于.find
、.findIndex
和箭头函数的进一步参考:
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex
如果没有Array#findIndex
,您可能需要填充,但这很容易做到。