我怎样才能使这个实现更短?

时间:2019-06-28 17:57:59

标签: javascript arrow-functions

我想简化此实现。

const person1 = {
  data: () => ({ name: 'Andrei' })
}

const users = [person1];

const parse = (doc) => {
  return (callback) => {
    return callback(doc.data())
  };
};

users.map(doc => parse(doc)(user => console.log(user)));

我在想这样的事情,因为解析函数已经从map中获取了参数,但是我不知道该怎么做,甚至不知道。

users.map(parse (user => console.log(user)));

2 个答案:

答案 0 :(得分:0)

我不知道该解析方法是否真的必要,不是吗,否则我认为这就是我在您的

上执行的方法
    const person1 = {
      data: () => ({ name: 'Andrei' })
    }

    const users = [person1];

    users.map(doc => console.log(doc.data()));

另一种方式

    const person1 = {
      data: () => ({ name: 'Andrei' })
    }

    const users = [person1];

    const parse = (doc, callback) => {
      return callback(doc.data());
    };

    users.map(doc => parse(doc, user => console.log(user)));

答案 1 :(得分:0)

我终于找到了解决这个问题的最短方法:

const person1 = {
  data: () => ({ name: 'Andrei' })
}

const users = [person1];

function produce() {
  return function (doc) {
    return doc.data();
  }
}

users.map(
  produce(user => {
    console.log(user);
  })
)

我从咖喱的库immmer.js-> https://github.com/immerjs/immer/blob/a9c0fd02c7575cfa6e61563e50a51ccc71949d9d/src/immer.js#L37

中使用了咖喱调用来解决此问题。