Coder Social home page Coder Social logo

Support for `fill` about es-toolkit HOT 3 CLOSED

raon0211 avatar raon0211 commented on August 14, 2024
Support for `fill`

from es-toolkit.

Comments (3)

raon0211 avatar raon0211 commented on August 14, 2024 1
export function fill<T>(array: unknown[], value: T): T[];
export function fill<T, P>(array: Array<T>, value: P, start: number): Array<T | P>;
export function fill<T, P>(array: Array<T>, value: P, start: number, end: number): Array<T | P>;
export function fill<T, P>(array: Array<T>, value: P, start = 0, end = array.length): Array<T | P> {
  start = Math.max(start, 0);
  end = Math.min(end, array.length);

  for (let i = start; i < end; i++) {
    array[i] = value;
  }

  return array;
}

What about implementation like this? I guess it is more simpler.

from es-toolkit.

hansolbangul avatar hansolbangul commented on August 14, 2024

I've given this a try:

export function fill<T>(array: any[], value: T): T[];
export function fill<T, P>(array: Array<T | P>, value: P, start?: number, end?: number): Array<T | P>;
export function fill<T, P>(array: Array<T | P>, value: P, start = 0, end?: number): Array<T | P> {
  const length = array.length;
  if (!length) {
    return array;
  }

  const startIdx = start < 0 ? Math.max(length + start, 0) : Math.min(start, length);
  const endIdx = end === undefined ? length : end < 0 ? Math.max(length + end, 0) : Math.min(end, length);

  for (let i = startIdx; i < endIdx; i++) {
    array[i] = value;
  }

  return array;
}

If the above code looks good, may I proceed with enhancing the documentation and tests, and then submit a pull request?

from es-toolkit.

hansolbangul avatar hansolbangul commented on August 14, 2024
export function fill<T>(array: unknown[], value: T): T[];
export function fill<T, P>(array: Array<T>, value: P, start: number): Array<T | P>;
export function fill<T, P>(array: Array<T>, value: P, start: number, end: number): Array<T | P>;
export function fill<T, P>(array: Array<T>, value: P, start = 0, end = array.length): Array<T | P> {
  start = Math.max(start, 0);
  end = Math.min(end, array.length);

  for (let i = start; i < end; i++) {
    array[i] = value;
  }

  return array;
}

What about implementation like this? I guess it is more simpler.

Your code is excellent. I've learned something new!

from es-toolkit.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.