在数组中查找第一个非零值索引



我有一个数组的数组:

[
    [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,您可能需要填充,但这很容易做到。

最新更新