Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript/jquery在多维数组中仅获取唯一项?_Javascript_Jquery_Multidimensional Array_Unique - Fatal编程技术网

如何使用JavaScript/jquery在多维数组中仅获取唯一项?

如何使用JavaScript/jquery在多维数组中仅获取唯一项?,javascript,jquery,multidimensional-array,unique,Javascript,Jquery,Multidimensional Array,Unique,例如,我得到了一个具有2维的多维数组项。 我从一个数据库中得到这个数组,但它将填充2600多个对象,但如果我能了解它的独特性,它将是大约30个对象。如何解决这个问题 设置为: 我如何获得信息: $.getJSON(url1,function(data1) { for (var i in data1.layers){ $.each(data1.layers[i].legend, function( a, b ) { for(var a in data

例如,我得到了一个具有2维的多维数组项。 我从一个数据库中得到这个数组,但它将填充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中使用它。

首先将它们推到阵列上是一个错误。您应该创建一个关联数组,其中键字段是唯一的方面。

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

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});
              }

            });

        }
    });
  }
}

我建议:

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


B) 每个独特的物品都有一个钥匙(如vogomatix建议的)

实际上,这看起来像一个对象数组。您需要显示数据来自何处以及如何构建阵列。哪些部分是唯一的?2600个标签和URL都是相似的,还是只有30个不同的URL有很多标签?@Juhana i添加了items数组的信息@vogomatix将获得约30个不同的标签和URL,但它将在阵列中“克隆”它们。如果你能接触服务器端,我同意此解决方案。这正是我想要的。谢谢,但我必须承认,如果我可以在服务器端更改内容,我会这样做。