/*! * Jodit Editor (https://xdsoft.net/jodit/) * License GNU General Public License version 2 or later; * Copyright 2013-2019 Valeriy Chupurnov https://xdsoft.net */ import { IDictionary } from '../../types'; type eachCallback = ((this: T, key: N, value: T) => boolean | void); export function each(obj: T[], callback: eachCallback): boolean; export function each( obj: IDictionary, callback: eachCallback ): boolean; export function each( obj: T[] | IDictionary, callback: eachCallback ): boolean { let length: number, keys: string[], i: number; if (Array.isArray(obj)) { length = obj.length; for (i = 0; i < length; i += 1) { if (callback.call(obj[i], i, obj[i]) === false) { return false; } } } else { keys = Object.keys(obj); for (i = 0; i < keys.length; i += 1) { if (callback.call(obj[keys[i]], keys[i], obj[keys[i]]) === false) { return false; } } } return true; }