我正在尝试编写一个函数,该函数返回值小于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();
答案 0 :(得分:2)
此功能已存在。它被称为findIndex
。
distance.findIndex(i => i <= 100)
答案 1 :(得分:0)
indexOf
返回您给出的参数的第一个索引。你给它一个不等式,它在传递之前计算为一个布尔值。这意味着你基本上告诉它在仅包含数字的数组中搜索布尔值。这就是它返回-1的原因;您的列表不包含任何文字true
或false
值。
我相信你正在寻找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).