2024-11-05 10:14:41 +08:00

26 lines
686 B
TypeScript

import { baseTimes } from './_baseTime'
import { isIndex } from './_isIndex'
import { isArguments } from './is-arguments'
import { isArray } from './is-array'
const objectProto = Object.prototype
const hasOwnProperty = objectProto.hasOwnProperty
export function arrayLikeKeys(value: any, inherited?: any) {
const result =
isArray(value) || isArguments(value) ? baseTimes(value.length, String) : []
const length = result.length,
skipIndexes = !!length
for (const key in value) {
if (
(inherited || hasOwnProperty.call(value, key)) &&
!(skipIndexes && (key == 'length' || isIndex(key, length)))
) {
result.push(key)
}
}
return result
}