<!-- Click "Preview" for a more readable version --

Please read and follow the instructions before submitting an issue:

- Read all our documentation, especially the [README](https://github.com/axios/axios/blob/master/README.md). It may contain information that helps you solve your issue.
- Ensure your issue isn't already [reported](https://github.com/axios/axios/issues?utf8=%E2%9C%93&q=is%3Aissue).
- If you aren't sure that the issue is caused by Axios or you just need help, please use [Stack Overflow](https://stackoverflow.com/questions/tagged/axios) or [our chat](https://gitter.im/mzabriskie/axios).
- If you're reporting a bug, ensure it isn't already fixed in the latest Axios version.
- Don't remove any title of the issue template, or it will be treated as invalid by the bot.

⚠️👆 Feel free to these instructions before submitting the issue 👆⚠️
-->

#### Describe the bug

`config.paramsSerializer.indexes = false` (default) adds indexes if an object is inside an array but it shouldn't.

#### To Reproduce

https://runkit.com/doits/634530f2d3a446000813ef73

```js
var axios = require("axios")

const req = await axios.get('https://www.example.com', { params: { a: [{ name: 'abc' }], b: ['x', 'y'] } })

console.log(req.request.path)

// => "/?a[0][name]=abc&b[]=x&b[]=y"
```

#### Expected behavior

No `a[0]` but `a[]`:

```js
// => "/?a[][name]=abc&b[]=x&b[]=y"
```

#### Environment
 - Axios Version 1.1.2

#### Additional context/Screenshots

None

test/typescript/axios.ts
axios.get('/user')
  .then((response: AxiosResponse) => 'foo')
  .then((value: string) => {});
axios.get('/user')
  .then((response: AxiosResponse) => Promise.resolve('foo'))
  .then((value: string) => {});
axios.get('/user')
  .then((response: AxiosResponse) => 'foo', (error: any) => 'bar')
  .then((value: string) => {});
axios.get('/user')
  .then((response: AxiosResponse) => 'foo', (error: any) => 123)
  .then((value: string | number) => {});
axios.get('/user')
  .catch((error: any) => 'foo')
  .then((value) => {});
axios.get('/user')
  .catch((error: any) => Promise.resolve('foo'))
  .then((value) => {});
const source: CancelTokenSource = axios.CancelToken.source();
axios.get('/user', {
  cancelToken: source.token
}).catch((thrown: AxiosError | Cancel) => {
  if (axios.isCancel(thrown)) {
    const cancel: Cancel = thrown;
    console.log(cancel.message);
  }
});
source.cancel('Operation has been canceled.');
axios.get('/user')
  .catch((error) => {