Skip to content

@utilslib/core/entries


通用的条目迭代器

  • Map: [key, value]
  • Set: [value, value]
  • Array/Iterable: [index, value]
  • Object: [key, value]

entries

函数签名

typescript
function entries<T, K, V>(data: Map<K, V> | Set<T> | Iterable<T> | Record<string, any>): Generator<[K | number | string | T, V | T], void, unknown>

描述

通用的条目迭代器

  • Map: [key, value]
  • Set: [value, value]
  • Array/Iterable: [index, value]
  • Object: [key, value]

类型参数

参数名约束默认值描述
T---
K---
V---

参数

参数名类型可选默认值描述
dataMap<K, V> | Set<T> | Iterable<T> | Record<string, any>--

返回值

Generator<[K | number | string | T, V | T], void, unknown>

点击查看源码
js
/**
 * 通用的条目迭代器
 * - Map: [key, value]
 * - Set: [value, value]
 * - Array/Iterable: [index, value]
 * - Object: [key, value]
 */
export function* entries(data) {
  if (data instanceof Map) yield* data;
  else if (data instanceof Set) {
    for (const v of data) yield [v, v];
  } else if (typeof data[Symbol.iterator] === "function") {
    let i = 0;
    for (const v of data) yield [i++, v];
  } else if (data) {
    yield* Object.entries(data);
  }
}
ts
/**
 * 通用的条目迭代器
 * - Map: [key, value]
 * - Set: [value, value]
 * - Array/Iterable: [index, value]
 * - Object: [key, value]
 */
export function* entries<T, K, V>(
  data: Map<K, V> | Set<T> | Iterable<T> | Record<string, any>,
): Generator<[K | number | string | T, V | T], void, unknown> {
  if (data instanceof Map) yield* data;
  else if (data instanceof Set) {
    for (const v of data) yield [v, v] as [T, T];
  } else if (typeof (data as Iterable<T>)[Symbol.iterator] === "function") {
    let i = 0;
    for (const v of data as Iterable<T>) yield [i++, v] as [number, T];
  } else if (data) {
    yield* Object.entries(data) as [string, any][];
  }
}

如有错误,请提交issue :::