Learn more  » Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

skava / chain-able-deps   js

Repository URL to install this package:

Version: 6.0.4 

/ src / dot / set.ts

import { AnyArrayOrObj } from '../_typings'
import { isObj } from '../is'
import lengthMinusOne from '../util/lengthMinusOne'
import getPathSegments from './segments'
import isDottable from './dottable'

export default function dotset(obj: AnyArrayOrObj, path: string | string[], value: any): void {
  if (!isDottable(obj, path)) {
    return
  }

  const pathArr = getPathSegments(path)

  for (let i = 0; i < pathArr.length; i++) {
    const p = pathArr[i]

    if (!isObj(obj[p])) {
      obj[p] = {}
    }

    // isLast
    if (i === lengthMinusOne(pathArr)) {
      obj[p] = value
    }

    obj = obj[p]
  }
}