( loopable: T[] | Record<string, T>, fn: (this: TA, v: T, i: any) => void, thisArg?: TA, reverse?: boolean )
| 132 | reverse?: boolean |
| 133 | ): void; |
| 134 | export function each<T, TA>( |
| 135 | loopable: T[] | Record<string, T>, |
| 136 | fn: (this: TA, v: T, i: any) => void, |
| 137 | thisArg?: TA, |
| 138 | reverse?: boolean |
| 139 | ) { |
| 140 | let i: number, len: number, keys: string[]; |
| 141 | if (isArray(loopable)) { |
| 142 | len = loopable.length; |
| 143 | if (reverse) { |
| 144 | for (i = len - 1; i >= 0; i--) { |
| 145 | fn.call(thisArg, loopable[i], i); |
| 146 | } |
| 147 | } else { |
| 148 | for (i = 0; i < len; i++) { |
| 149 | fn.call(thisArg, loopable[i], i); |
| 150 | } |
| 151 | } |
| 152 | } else if (isObject(loopable)) { |
| 153 | keys = Object.keys(loopable); |
| 154 | len = keys.length; |
| 155 | for (i = 0; i < len; i++) { |
| 156 | fn.call(thisArg, loopable[keys[i]], keys[i]); |
| 157 | } |
| 158 | } |
| 159 | } |
| 160 | |
| 161 | /** |
| 162 | * Returns true if the `a0` and `a1` arrays have the same content, else returns false. |
no test coverage detected