import { isArrLike } from '../array/isArrLike'; import { isIterable } from './isIterable'; import { IterableV } from '../../types'; /** * 遍历对象的值 * @category Object */ export function each>(obj: T, iterator: (v: IterableV, k: number, o: T) => any): void; export function each, K extends Exclude>(obj: T, iterator: (v: T[K], k: number, o: T) => any): void; export function each(obj: T, iterator: (v: V, k: K, o: T) => any): void; export function each(obj: ArrayLike | Iterable | Object, iterator) { if (isArrLike(obj) || isIterable(obj)) { Array.from(obj).forEach(iterator); } else { Object.keys(obj).forEach(k => { const v = obj[k]; iterator(v, k, obj); }); } }