D3.js - API de coleções

Uma coleção é simplesmente um objeto que agrupa vários elementos em uma única unidade. Também é chamado de contêiner. Este capítulo explica detalhadamente a API de coleções.

Configurando API

Você pode configurar a API usando o seguinte script.

<script src = "https://d3js.org/d3-collection.v1.min.js"></script>
<script>

</script>

Métodos da API de coleções

A API de coleções contém objetos, mapas, conjuntos e ninhos. A seguir estão os métodos de API de coleções mais comumente usados.

  • API de objetos
  • API do Maps
  • API de conjuntos
  • API Nests

Vamos examinar cada uma dessas API em detalhes.

API de objetos

A API de objeto é um dos tipos de dados importantes. Ele suporta os seguintes métodos -

  • d3.keys(object) - Este método contém as chaves de propriedade do objeto e retorna uma matriz dos nomes das propriedades.

  • d3.values(object) - Este método contém os valores do objeto e retorna uma matriz de valores de propriedade.

  • d3.entries(object)- Este método é usado para retornar uma matriz contendo chaves e valores do objeto especificado. Cada entrada é um objeto com uma chave e um valor.

Example - Vamos considerar o seguinte código.

d3.entries({one: 1})

Aqui, a chave é um e o valor é 1.

Example - Crie uma página da web objects.html e adicione as seguintes alterações a ele.

<html>
   <head>
      <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script>
   </head>

   <body>
      <h3>D3 collection API</h3>
      <script>
         var month = {"jan": 1, "Feb": 2, "mar": 3, "apr": 4};
         console.log(d3.keys(month));
         console.log(d3.values(month));
         console.log(d3.entries(month));
      </script>
   </body>
</html>

Agora, solicite o navegador e você verá a seguinte resposta.

API do Maps

Um mapa contém valores baseados em pares de chave e valor. Cada par de chave e valor é conhecido como uma entrada. Um mapa contém apenas chaves exclusivas. É útil pesquisar, atualizar ou excluir elementos com base na chave. Vamos examinar os vários métodos da API do Google Maps em detalhes.

  • d3.map([object[, key]])- Este método é usado para criar um novo mapa. O objeto é usado para copiar todas as propriedades enumeráveis.

  • map.has(key) - Este método é usado para verificar se o mapa possui uma entrada para a string de chave especificada.

  • map.get(key) - Este método é usado para retornar o valor da string de chave especificada.

  • map.set(key, value)- Este método é usado para definir o valor da string de chave especificada. Se o mapa anteriormente tinha uma entrada para a mesma string de chave, a entrada antiga é substituída pelo novo valor.

  • map.remove(key)- É usado para remover a entrada do mapa. Se a chave não for especificada, ele retornará falso.

  • map.clear() - Remove todas as entradas deste mapa.

  • map.keys() - Retorna uma matriz de chaves de string para cada entrada neste mapa.

  • map.values() - Retorna uma matriz de valores para cada entrada neste mapa.

  • map.entries() - Retorna uma matriz de objetos de valor-chave para cada entrada neste mapa.

  • (x) map.each(function) - Este método é usado para chamar a função especificada para cada entrada no mapa.

  • (xi) map.empty() - Retorna verdadeiro se e somente se este mapa tiver zero entradas.

  • (xii) map.size() - Retorna o número de entradas neste mapa.

Example - Crie uma página da web maps.html e adicione as seguintes alterações a ele.

<html>
   <head>
      <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script>
   </head>

   <body>
      <h3>D3 collection API</h3>
      <script>
         var month = d3.map([{name: "jan"}, {name: "feb"}], 
            function(d) { return d.name; });
         console.log(month.get("jan")); // {"name": "jan"}
         console.log(month.get("apr")); // undefined
         console.log(month.has("feb")); // true
         
         var map =  d3.map().set("fruit", "mango");
         console.log(map.get("fruit")); // mango
         console.log(map.remove("fruit")); // remove key and return true.
         console.log(map.size());    // size is 0 because key removed.
         console.log(map.empty());   // true
      </script>
   </body>
</html>

Agora, solicite o navegador e veremos a seguinte resposta.

Da mesma forma, você também pode realizar outras operações.

API de conjuntos

Um conjunto é uma coleção que não pode conter elementos duplicados. Ele modela a abstração matemática do conjunto. Vamos examinar os vários métodos da API Sets em detalhes.

  • d3.set([array[, accessor]])- Este método é usado para criar um novo conjunto. Array é usado para adicionar valores de string. Um acessador é opcional.

  • set.has(value) - Este método é usado para verificar se o conjunto possui uma entrada para a string de valor especificada.

  • set.add(value) - É usado para adicionar a string de valor especificada ao conjunto.

  • set.remove(value) - É usado para remover o conjunto que contém a string de valor especificada.

  • set.clear() - Remove todos os valores deste conjunto.

  • set.values() - Este método é usado para retornar uma matriz de valores para o conjunto.

  • set.empty() - Retorna verdadeiro se e somente se este conjunto tiver valores zero.

  • set.size() - Retorna o número de valores neste conjunto.

Example - Crie uma página da web sets.html e adicione as seguintes alterações a ele.

<html>
   <head>
      <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script>
   </head>

   <body>
      <h3>D3 collection API</h3>
      <script>
         var fruits =  d3.set().add("mango")
          .add("apple").add("orange");
         console.log(fruits.has("grapes")); // return false.
         console.log(fruits.remove("apple")); //true
         console.log(fruits.size());    // size is 2
         console.log(fruits.empty());   // true
      </script>
   </body>
</html>

Agora, solicite o navegador e veremos a seguinte resposta em nossa tela.

Da mesma forma, podemos realizar outras operações também.

API Nests

A API Nesting contém elementos em array e atua em uma estrutura de árvore hierárquica. Vamos examinar os vários métodos da API Nests em detalhes.

  • d3.nest() - Este método é usado para criar um novo ninho.

  • nest.key(key)- Este método é usado para inicializar uma nova função de tecla. Essa função é usada para chamar cada elemento em uma matriz de entrada e retornar elementos no grupo.

  • nest.sortKeys(comparator)- Este método é usado para classificar chaves em um comparador especificado. A função é definida como d3.ascending ou d3.descending.

  • nest.sortValues(comparator)- Este método é usado para classificar valores em um comparador especificado. A função de comparador classifica os elementos folha.

  • nest.map(array)- Este método é usado para aplicar a matriz especificada e retornar um mapa aninhado. Cada entrada no mapa retornado corresponde a um valor de chave distinto retornado pela primeira função de chave. O valor da entrada depende do número de funções chave registradas.

  • nest.object(array) - Este método é usado para aplicar o operador de aninhamento à matriz especificada e retornar um objeto aninhado.

  • nest.entries(array) - Este método é usado para aplicar o operador de nidificação à matriz especificada e retornar uma matriz de entradas de valores-chave.

Considere uma página da web simples nest.html para executar os métodos de nidificação discutidos acima.

Example - Vamos considerar o seguinte exemplo.

<html>
   <head>
      <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script>
   </head>

   <body>
      <h3>D3 Nest API</h3>
      <script>
         var data = [
            {
               "color" : "red",
               "key" : 1
            },
            {
               "color" : "green",
               "key" : 2
            },
            {
               "color" : "blue",
               "key" : 75
            }
         ]
         var nest =  d3.nest()
            .key(function (d) { return d.color; })
            .entries(data)console.log(nest);
         var filter = nest.filter(function (d) { return d.key = = = 'red' })
         console.log(filter);
      </script>
   </body>
</html>

Agora, verifique o resultado em um navegador e veremos o seguinte resultado.

Array[3]
0: Object
1: Object
2: Object
length: 3
__proto__: Array[0]

Array[1]
0: Object
length: 1
__proto__: Array[0]