我有一个数组数组:
[
[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;})
,但不支持此版本。
如何以最优雅的方式解决这个问题?
答案 0 :(得分:9)
如何以最优雅的方式解决这个问题?
最佳解决方案是使用原生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
和箭头功能的进一步参考:
如果没有,你可能需要重新加Array#findIndex
,但这很容易。