Em JavaScript os tipos de variáveis são divididos em 2 tipos:
- tipos primitivos (números, strings, valores booleanos, null e undefined)
- tipos de objeto (qualquer valor em JavaScript que não seja número, string, booleano, null ou undefined é um objeto)
Dito isso, um objeto é um conjunto não ordenado de propriedades (com nome e valor).
Um array nada mais é que um tipo especial de objeto. Por exemplo, uma função é outro tipo especial de objeto.
"Um array representa um conjunto ordenado de valores numerados". Os arrays têm comportamentos e sintaxe especiais que os diferenciam de objetos normais.
Objetos são fundamentais em JavaScript, e ele agrega diversos valores (valores primitivos ou outros objetos). Através de um objeto, é possível armazenar e recuperar valores pelo nome. Objetos também possuem métodos (funções que definem comportamento dentro de um objeto), e você pode "herdar" propriedades e objetos.
Com arrays nós temos uma estrutura de dados, podendo realizar diversas "ações" com os valores dentro de um array. Os valores de um array são chamados de elementos, podendo ser de qualquer tipo. Suas posições são chamadas de índices.
Espero ter ajudado a esclarecer um pouco mais, porém essa é só uma abordagem conceitual inicial. Há muito a ser explorado. Visualizar esses conceitos na prática vai te ajudar a entender melhor tudo isso!
Bons estudos!