# Function: autocompleteSearchObjects()

> **autocompleteSearchObjects**\<`T`>(`search`, `objs`, `displayKey`, `valueKey`): `Promise`\<[`MetadataFormulaObjectResultType`](../../interfaces/MetadataFormulaObjectResultType/)[]>

Defined in: [api.ts:2184](https://github.com/coda/packs-sdk/blob/b2b4c9dba5ca748bdbb94481cc13b5ca3c328ef6/api.ts#L2184)

A helper to search over a list of objects representing candidate search results, filtering to only those that match a search string, and converting the matching objects into the format needed for autocomplete results.

A case-insensitive search is performed over each object's `displayKey` property.

A common pattern for implementing autocomplete for a formula pattern is to make a request to an API endpoint that returns a list of all entities, and then to take the user's partial input and search over those entities for matches. The helper generalizes this use case.

## Example

```
sdk.makeParameter({
  type: ParameterType.Number,
  name: "userId",
  description: "The ID of a user.",
  autocomplete: async function(context, search) {
    // Suppose this endpoint returns a list of users that have the form
    // `{name: "Jane Doe", userId: 123, email: "jane@doe.com"}`
    const usersResponse = await context.fetcher.fetch("/api/users");
    // This will search over the name property of each object and filter to only
    // those that match. Then it will transform the matching objects into the form
    // `{display: "Jane Doe", value: 123}` which is what is required to render
    // autocomplete responses.
    return sdk.autocompleteSearchObjects(search, usersResponse.body, "name", "userId");
  }
});
```

## Type Parameters

| Type Parameter | | --- | | `T` |

## Parameters

| Parameter | Type | | --- | --- | | `search` | `string` | | `objs` | `T`[] | | `displayKey` | { \[K in string | number | symbol\]: T[K] extends string ? K : never }\[keyof `T`\] | | `valueKey` | { \[K in string | number | symbol\]: T[K] extends string | number ? K : never }\[keyof `T`\] |

## Returns

`Promise`\<[`MetadataFormulaObjectResultType`](../../interfaces/MetadataFormulaObjectResultType/)[]>
