首页 > 解决方案 > “为被束缚而生” Kata 99% 解决方案

问题描述

我有一个功能可以解决 Code Wars 上的 kata,名为"Born to be chained",一切看起来都很好,每个测试都通过了,除了最后一个。“添加一个数组”

我看了别人的代码,和我的一模一样。问题是:我的代码有什么问题?

唯一的区别是每次都会在那里创建一个新实例,但我几乎有相同的东西。通过所有测试的代码:

function chain(fns) {
        let Chain = function (val) {
          this.execute = () => val
        }
        for (let i in fns)
          Chain.prototype[i] = function (a, b) {
            let val = this.execute(),
              args = val === null ? [a, b] : [val, a]
            return new Chain(fns[i](...args))
          }
        return new Chain(null)
      }

我的代码:

let chain = function (fns) {
  let metds = {
    execute() {
      return this.res
    }
  }

  for (let key in fns) {
    metds[key] = (...args) => {
      metds.res = !metds.res ? fns[key](...args) : fns[key](metds.res, ...args)
      return {
        ...metds
      }
    }
  }

  return metds
}

标签: javascript

解决方案


决定:

for (let key in fns) {
  metds[key] = function (...args) {
    let res = !this.res ? fns[key](...args) : fns[key](this.res, ...args)
    return {
      ...metds,
      res
    }
  }
}

推荐阅读