【问题标题】:How to get only unique items in a multidimensional array with JavaScript/jquery?如何使用 JavaScript/jquery 仅获取多维数组中的唯一项?
【发布时间】:2013-12-03 15:26:18
【问题描述】:

例如,我得到了一个二维的多维数组项。 我从数据库中获取了这个数组,但它最多可以填充 2600 多个对象,但如果我能知道它有多独特,它将是大约 30 个对象。如何解决这个问题?

设置如下: 我如何获得信息:

$.getJSON(url1,function(data1)
{
    for (var i in data1.layers){
        $.each(data1.layers[i].legend, function( a, b ) {
            for(var a in data1.layers[i].legend[a]){
                $.each(data1.layers[i].legend, function( key, val ){
                    items.push({label: val.label, url: "long link" + val.url});
                });
            };
        });     
    };

items[0].label  
items[0].url 
items[1].label    
items[1].url

等等……

我在 php 中找到了另一个关于此的 stackoverflow 页面,但我无法让它在 JavaScript/JQuery 中工作。 Stackoverflow php solution

【问题讨论】:

  • 实际上,这看起来像一个对象数组。您需要显示数据的来源以及构建数组的方式。
  • 哪些部分是独一无二的?所有 2600 个标签和 url 都是相似的,还是只有 30 个带有很多标签的不同 url?
  • @Juhana 我添加了 items 数组的信息。 @vogomatix 它将获得大约 30 个不同的标签和 url,但它会在数组中“克隆”它们。

标签: javascript jquery multidimensional-array unique


【解决方案1】:

使用字典查看您已经拥有的项目:

var dict = {};

$.getJSON(url1,addToLocalArray);

function addToLocalArray(data1){

  for (var i in data1.layers){

    $.each(data1.layers[i].legend, function( a, b ) {

        for(var a in data1.layers[i].legend[a]){

            $.each(data1.layers[i].legend, function( key, val ){

              if(!dict[val.url+'-'+val.label]){
                // or create some sort of unique hash for each element...
                dict[val.url+'-'+val.label] = 1;

                items.push({label: val.label, url: "long link" + val.url});
              }

            });

        }
    });
  }
}

【讨论】:

  • 这就是我想要的,谢谢,但我不得不承认,如果我可以在服务器端进行更改,我会这样做。
【解决方案2】:

您一开始就将它们推送到数组上是错误的。您应该创建一个关联数组,其中键字段是唯一的方面。

【讨论】:

    【解决方案3】:

    我会建议:

    A) 将唯一性过滤逻辑推送到数据库。它在这方面效率更高,并且不需要详尽的迭代。

    B)为每个独特的项目都有一个密钥(如 vogomatix 建议的那样)。

    【讨论】:

    • 如果你能触摸到服务器端我同意这个方案。
    猜你喜欢
    • 2023-03-14
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多