Skip to content

Object.keys, values, entries - #464

Merged
gabifs merged 2 commits into
javascript-tutorial:masterfrom
diogoosz:translate-object-keys-values-entries
Nov 7, 2026
Merged

gabifs merged 2 commits into
javascript-tutorial:masterfrom
diogoosz:translate-object-keys-values-entries

Conversation

@diogoosz

@diogoosz diogoosz commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

Tradução do artigo "Object.keys, values, entries" para o português, incluindo os dois exercícios.

Conforme comentado na #1.

@CLAassistant

CLAassistant commented Nov 4, 2026 •

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@gabifs gabifs left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Obrigado pela tradução! Deixei algumas sugestões para deixar o texto mais natural em português.

# Object.keys, values, entries

Let's step away from the individual data structures and talk about the iterations over them.
Vamos dar um passo atrás das estruturas de dados individuais e falar sobre como iterar sobre elas.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Dar um passo atrás de algo" passa a ideia de recuar para trás de alguma coisa, não de deixar o assunto de lado. Sugestão:

Suggested change
Vamos dar um passo atrás das estruturas de dados individuais e falar sobre como iterar sobre elas.
Vamos deixar de lado as estruturas de dados individuais e falar sobre como iterar sobre elas.

No capítulo anterior, vimos os métodos `map.keys()`, `map.values()`, `map.entries()`.

These methods are generic, there is a common agreement to use them for data structures. If we ever create a data structure of our own, we should implement them too.
Esses métodos são genéricos, existe um acordo comum para usá-los em estruturas de dados. Se um dia criarmos nossa própria estrutura de dados, devemos implementá-los também.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aqui a vírgula ficou igual à do inglês e a frase ficou corrida. Além disso, "acordo comum" não transmite bem a ideia de "convention". Que tal:

Suggested change
Esses métodos são genéricos, existe um acordo comum para usá-los em estruturas de dados. Se um dia criarmos nossa própria estrutura de dados, devemos implementá-los também.
Esses métodos são genéricos: há uma convenção de usá-los em estruturas de dados. Se um dia criarmos nossa própria estrutura de dados, devemos implementá-los também.

|-------------|------------------|--------------|
| Call syntax | `map.keys()` | `Object.keys(obj)`, but not `obj.keys()` |
| Returns | iterable | "real" Array |
| Sintaxe de chamada | `map.keys()` | `Object.keys(obj)`, mas não `obj.keys()` |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Detalhe: "Sintaxe de chamada" ficou mais largo que a célula do cabeçalho, então as colunas da tabela ficaram desalinhadas no markdown. A tabela é exibida normalmente; é só para facilitar a leitura do código-fonte. Dá para reajustar o espaçamento do cabeçalho e do separador?

A primeira diferença é que precisamos chamar `Object.keys(obj)`, e não `obj.keys()`.

Why so? The main reason is flexibility. Remember, objects are a base of all complex structures in JavaScript. So we may have an object of our own like `data` that implements its own `data.values()` method. And we still can call `Object.values(data)` on it.
Por que assim? O principal motivo é flexibilidade. Lembre-se, objetos são a base de todas as estruturas complexas em JavaScript. Então podemos ter um objeto nosso, chamado `data`, que implementa seu próprio método `data.values()`. E ainda assim podemos chamar `Object.values(data)` sobre ele.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Chamar ... sobre ele" é tradução literal de "call ... on it" e soa estranho em português. Dá para tirar essa parte:

Suggested change
Por que assim? O principal motivo é flexibilidade. Lembre-se, objetos são a base de todas as estruturas complexas em JavaScript. Então podemos ter um objeto nosso, chamado `data`, que implementa seu próprio método `data.values()`. E ainda assim podemos chamar `Object.values(data)` sobre ele.
Por que assim? O principal motivo é flexibilidade. Lembre-se, objetos são a base de todas as estruturas complexas em JavaScript. Então podemos ter um objeto nosso, chamado `data`, que implementa seu próprio método `data.values()`. E ainda assim podemos chamar `Object.values(data)`.

Por que assim? O principal motivo é flexibilidade. Lembre-se, objetos são a base de todas as estruturas complexas em JavaScript. Então podemos ter um objeto nosso, chamado `data`, que implementa seu próprio método `data.values()`. E ainda assim podemos chamar `Object.values(data)` sobre ele.

The second difference is that `Object.*` methods return "real" array objects, not just an iterable. That's mainly for historical reasons.
A segunda diferença é que os métodos `Object.*` retornam objetos "array de verdade", e não apenas um iterável. Isso é, principalmente, por motivos históricos.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Objetos 'array de verdade'" e "Isso é, principalmente, por motivos históricos" ficaram bem próximos do original em inglês. Sugestão mais natural:

Suggested change
A segunda diferença é que os métodos `Object.*` retornam objetos "array de verdade", e não apenas um iterável. Isso é, principalmente, por motivos históricos.
A segunda diferença é que os métodos `Object.*` retornam arrays "de verdade", e não apenas iteráveis. Isso se deve principalmente a motivos históricos.

```

It may look difficult at first sight, but becomes easy to understand after you use it once or twice. We can make powerful chains of transforms this way.
Pode parecer difícil à primeira vista, mas fica fácil de entender depois que você usa uma ou duas vezes. Dá pra montar cadeias de transformações bem poderosas dessa forma.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Pra" não aparece em nenhum outro lugar do 1-js/. Para manter o tom informal, mas correto, do resto do tutorial:

Suggested change
Pode parecer difícil à primeira vista, mas fica fácil de entender depois que você usa uma ou duas vezes. Dá pra montar cadeias de transformações bem poderosas dessa forma.
Pode parecer difícil à primeira vista, mas fica fácil de entender depois que você usa uma ou duas vezes. Dá para montar cadeias de transformações bem poderosas dessa forma.

Existe um objeto `salaries` com um número qualquer de salários.

Write the function `sumSalaries(salaries)` that returns the sum of all salaries using `Object.values` and the `for..of` loop.
Escreva a função `sumSalaries(salaries)` que retorna a soma de todos os salários, usando `Object.values` e o laço `for..of`.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gostei do uso de "laço" em vez de "loop", que segue a orientação de evitar palavras estrangeiras. Os capítulos mais antigos ainda usam "loop", mas isso pode ficar para outro PR.

Tente deixar o código o mais curto possível.

P.S. Ignore symbolic properties, count only "regular" ones.
P.S. Ignore propriedades simbólicas, conte apenas as "normais".

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Apenas as 'normais'" ficou um pouco vago: o leitor pode não saber quais propriedades contar. Sugestão:

Suggested change
P.S. Ignore propriedades simbólicas, conte apenas as "normais".
P.S. Ignore propriedades simbólicas, conte apenas as propriedades "comuns" (com chaves do tipo string).

Outra opção é manter "normais", desde que o termo seja usado da mesma forma em todo o capítulo.

@diogoosz

diogoosz commented Nov 7, 2026

Copy link
Copy Markdown
Contributor Author

Obrigado, @gabifs! Apliquei as sugestões de naturalidade ("deixar de lado", "convenção", removi o "sobre ele" literal, suavizei a frase sobre arrays "de verdade"), troquei "pra" por "para" pra manter o registro do resto do 1-js/, ajustei o espaçamento da tabela, e deixei o P.S. do segundo exercício mais específico sobre quais propriedades contar.

@gabifs
gabifs merged commit 4d19a82 into javascript-tutorial:master Nov 7, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants