在javascript中查找indexOf值

时间:2017-09-21 15:24:21

标签: javascript

我正在尝试编写一个函数,该函数返回值小于100的对象的索引。它当前返回-1,表示没有任何对象符合该条件,实际上我知道有一个符号。我想这很简单,我只是间隔开来。任何人都可以提出建议吗?感谢

var distance = [ 16996.054413094975,
  102.48330298955042,
  8930.89370465407,
  10856.832465874579,
  6820.160641562082,
  114.07012348350867,
  8730.587245583654,
  325.9682182750614,
  6247.132833741246,
  6528.189432909801,
  10856.170817339278,
  8036.961700844721,
  98.66650647724741,
  16265.209545673928,
  16266.769167269893,
  715.0404901364141,
  7121.899289338758 ];


var addresses = function(){
      for (var i = 0; i <= distance.length; i ++)
      var indexDistance = distance.indexOf((i) <= 100);
      console.log(indexDistance);
    };

addresses();

2 个答案:

答案 0 :(得分:2)

此功能已存在。它被称为findIndex

distance.findIndex(i => i <= 100)

答案 1 :(得分:0)

indexOf返回您给出的参数的第一个索引。你给它一个不等式,它在传递之前计算为一个布尔值。这意味着你基本上告诉它在仅包含数字的数组中搜索布尔值。这就是它返回-1的原因;您的列表不包含任何文字truefalse值。

我相信你正在寻找filter

// Find all numbers <= 100
var smallest =
    filter(n => n <= 100, distance)

// Get their indices
var indices =
    map(n => distance.indexOf(n), smallest);

这将找到所有数字的所有索引。如果您只希望第一个数字的索引小于100,则可以稍微简化一下:

// Find all numbers less than 100
//  then grab the first
var smallest =
    filter(n => n <= 100, distance)[0]

// Get the index
var index =
    distance.indexOf(smallest).