簡體   English   中英

如何使用JavaScript / jquery僅獲取多維數組中的唯一項?

[英]How to get only unique items in a multidimensional array with JavaScript/jquery?

例如,我得到了一個二維數組的多維數組。 我從數據庫中獲得了這個數組,但是它最多可以填充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解決方案

首先將它們推到數組上是您犯了一個錯誤。 您應該創建一個關聯數組,並且鍵字段為唯一方面。

使用字典查看您已經擁有的項目:

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建議)有一個鑰匙。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM