查找JS数组

时间:2017-02-09 17:21:00

标签: javascript arrays object lodash

我有和数组包含超过10 000个值,并且某种方式lodash方法includes停止工作。

数组的例子:

  ['888888111118888',
  '7771117717717771']

我的方法(不工作)但昨天也在工作(数组中的值较少)

toFind = '7771117717717771'; // this is just for example
return _.includes(arr, toFind);

并且无论toFind是否在数组中,该方法都返回“false”。有什么建议吗?

修改

所以这就是我现在注意到的:

        console.log(data.memberList.members[0].steamID64[7]);
        toFind = data.memberList.members[0].steamID64[7];
        console.log(_.findIndex(data.memberList.members[0].steamID64, toFind));

并回复:

999999999999
-1

那怎么可能呢?

2 个答案:

答案 0 :(得分:0)

Array.prototype.findIndex示例:

let arr = [ "123", "456" ];
let index = arr.findIndex ( x => { return x === "123" } );

这将返回0(第一个索引“123”)。如果你有对象:

let arr = [ { val : "123" }, { val : "456" } ];
let index = arr.findIndex ( x => { return x.val === "123" } );

等等。如果你得到-1,你的匹配器是错的,或者它不在数组中。

我非常尊重lodash,但随着我们越来越多的本地功能,如地图,集合,以及其他功能更高阶的功能(filter,map,reduce,findIndex等),我发现我使用它了减少。

答案 1 :(得分:0)

Array.prototype.find

let result = arr.find(r => r ==='7771117717717771');

如果定义了结果,则它存在于数组中。如果您正在寻找运行速度超过O(n)时间的操作,您应该研究其他数据结构,例如地图或树