Skip to content

⬅️ Back to Table of Contents

📄 useArrayUnique

📊 Analysis Summary

Metric Count
🔧 Functions 3
📦 Imports 4
🟢 Vue Composition API 1
📑 Type Aliases 1

📚 Table of Contents

🛠️ File Location:

📂 packages/shared/useArrayUnique/index.ts

📦 Imports

Name Source
ComputedRef vue
MaybeRefOrGetter vue
computed vue
toValue vue

Vue Composition API

Name Type Reactive Variables Composables
computed computed none none

Functions

useArrayUnique(list: MaybeRefOrGetter<MaybeRefOrGetter<T>[]>, compareFn: (a: T, b: T, array: T[]) => boolean): UseArrayUniqueReturn<T>

reactive unique array

Parameters:

  • list any: the array was called upon.
  • compareFn any: No description

Returns: undefined A computed ref that returns a unique array of items.

See: https://vueuse.org/useArrayUnique

Tags: @__NO_SIDE_EFFECTS__

Raw JSDoc
/**
 * reactive unique array
 * @see https://vueuse.org/useArrayUnique
 * @param list - the array was called upon.
 * @param compareFn
 * @returns A computed ref that returns a unique array of items.
 *
 * @__NO_SIDE_EFFECTS__
 */

Calls:

  • computed (from vue)
  • toValue(list).map
  • toValue (from vue)
  • uniqueElementsBy
  • uniq
Code
export function useArrayUnique<T>(
  list: MaybeRefOrGetter<MaybeRefOrGetter<T>[]>,
  compareFn?: (a: T, b: T, array: T[]) => boolean,
): UseArrayUniqueReturn<T> {
  return computed<T[]>(() => {
    const resolvedList = toValue(list).map(element => toValue(element))
    return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList)
  })
}

uniq(array: T[]): T[]

Parameters:

  • array T[]

Returns: T[]

Calls:

  • Array.from
Code
function uniq<T>(array: T[]) {
  return Array.from(new Set(array))
}

uniqueElementsBy(array: T[], fn: (a: T, b: T, array: T[]) => boolean): T[]

Parameters:

  • array T[]
  • fn (a: T, b: T, array: T[]) => boolean

Returns: T[]

Calls:

  • array.reduce
  • acc.some
  • fn
  • acc.push
Code
function uniqueElementsBy<T>(
  array: T[],
  fn: (a: T, b: T, array: T[]) => boolean,
) {
  return array.reduce<T[]>((acc, v) => {
    if (!acc.some(x => fn(v, x, array)))
      acc.push(v)
    return acc
  }, [])
}

Type Aliases

UseArrayUniqueReturn<T = any>

type UseArrayUniqueReturn<T = any> = ComputedRef<T[]>;

Generated by Syntax Scribe