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

时间:2015-08-06 10:31:14

标签: javascript arrays

我有一个数组数组:

[
    [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;}),但不支持此版本。

如何以最优雅的方式解决这个问题?

1 个答案:

答案 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,但这很容易。