/*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2021 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ import type { IDictionary } from '../../types'; import { isArray } from './checker'; 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; export function each( obj: T[] | IDictionary, callback: eachCallback ): boolean { let length: number, keys: string[], i: number; if (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; }