我正在编写一个允许组织记录和数据的脚本。
但是,现在的问题是我使用一个数组来存储大量信息,并且在我的脚本中的某个时刻,该数组被搜索以查找匹配的ID并进行更新。当数组大小超过200个元素时,数据搜索开始变得非常缓慢。
有什么方法可以更有效地搜索数组吗?
我当前正在使用find。(function(a){return x == y};);
数组中的每个元素也是一个元组。
示例代码:
onPipelineChanged: function(component, event, helper)
{
var titleid = event.getParam("titleid");
var title = event.getParam("title");
var maxSeats = event.getParam("maxSeats");
var seatsInUse = event.getParam("seatsInUse");
var item = event.getParam("item"); //This is the item that was moved.
var allGuestsList = component.get("v.allItems");
//Searches guest list for matching guest of who got moved.
var actualGuest = allGuestsList.find(function(moving){return moving.id == item.id;}); //***REALLY INEFFICIENT***
答案 0 :(得分:-1)
您可以尝试搜索算法,例如二进制搜索。 binary search
答案 1 :(得分:-2)
在长度为200的阵列中查找对于任何计算机都不会是困难的操作,即使是很老的计算机。
find
或map
或filter
或while
或for
可以快速运行。可能会变慢的是-如果您经常更改html。因此,请优化DOM操作,尝试计算内存中的所有内容,并在计算完所有数据后仅更改html等一次
例如:使用100000长度数组的许多操作仅花费7-8毫秒(0.007秒)
var timestart = new Date().getTime()
var arr = Array.from({length: 100000}, Math.random)
var newArr = arr
.filter(_ => _ < 0.5)
.map(_ => { return {val: _ * 2}})
.reverse()
.join(',')
.split(',')
var timeend = new Date().getTime()
console.log ('execution time (sec) ' + ((timeend - timestart) / 1000)) // for me 0.007 of sec