【问题标题】:How can I cycle a multidimensional array and load one part at a time? - Javascript如何循环多维数组并一次加载一个部分? - Javascript
【发布时间】:2018-06-23 02:11:18
【问题描述】:

我有一个非常大的多维 javascript 数组对象,其中包含许多地震的坐标。

像这样:

var array_eq= [
            [
            0 : {
              "casa": "home",
              "lat": "30",
              "lng": "40"
              },
            //...//
            400 : {
              "casa": "home",
              "lat": "30",
              "lng": "40"
              }
            ],
           [
            0 : {
              "casa": "home",
              "lat": "30",
              "lng": "40"
              },
            //...//
            400 : {
              "casa": "home",
              "lat": "30",
              "lng": "40"
              }
            ]
           ];

所以每个“数组容器”包含 400 次地震。 所有阵列可以有超过 120.000 次地震....

google maps 中显示所有内容需要很长时间,所以我尝试在“数组容器”中(所以每 400 个)一个一个显示地震。

我尝试用这种方式循环数组:

 for(var f= 0; f < array_eq.length; f++){   
    for(var i= 0; i < array_eq[f].length; i++){ 
     //add erathquakes/markers on google maps
    }
 }

但似乎没有块加载,这样阵列中的所有地震都是一起加载的。 这样对用户来说太长了....

你能给我一些建议吗?

我可以使用ajax 解决这个问题吗?

【问题讨论】:

  • 所以您有 400 x 120,000 个项目,您想为每个项目添加一个标记?那是 4800 万个标记。
  • nono 是 120,000 次地震,分为 400 个部分。数据库中有 1.700.000 次地震,理论上,用户可以看到所有这些地震。

标签: javascript arrays ajax performance loading


【解决方案1】:

一种选择是为过滤器控制创建一个函数。我已经用可能的解决方案更新了 JSFiddle。比如我这样设置一个filterTurma()函数:

$ scope.filterTurma = function (user) {

// If the value is be !! '(value you are assigning to' Everyone '),
// just returned 'true' for all cases to continue showing up ...
if ($ scope.search_turma.turmas.value == '!!')
true return;

// Do the opposite, do the classes of the user, and verify that at least
// one suites matches an advanced class in the combobox ...
for (var i = 0; i <user.turma.length; i ++) {
var class = user.turmas [i];
if (turma.value == $ scope.search_turma.turma.value)
true return;
}

// if it matched, return 'false' to hide this user ...
returns false;
};

总结代码,在您的组合中,您拥有类,并且仍然有一个选项“Everyone”,其值为 '!!'。没有过滤器,只检查combobox中被选中的item的当前值是否是this,否则我们检查是否至少有一个类对应于选中的类。在您的 HTML 中,要应用此过滤器,只需这样做:

tr ng-repeat = "user in dataUserAndTurma | filter: {name: search_nome} | filter: filterTurma"

注意我没有在方法名中使用括号(angularjs会在此处输入代码自动将当前用户在迭代中传递给方法),另外我保留了原始过滤器,即过滤器相互补充)。

【讨论】:

  • 您确定您的答案是正确的问题吗?我不明白你的代码以及如何帮助我...
  • Meu código foi feito agora para o exemplo,oque eu quero que faça é se basear。
  • Aplicar no seu caso usando o mesmo modelo de estrutura que montei nessa função.
  • 这个“答案”与问题完全无关。甚至没有涉及任何 Angular。此外,true return; 的语法无效。
  • 好的,很抱歉试图提供帮助,我当时没有正确解释这个问题..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-07
  • 1970-01-01
  • 2021-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多