Как сочинять в этой ситуации - PullRequest
1 голос
/ 24 апреля 2019
var articles = [
  {
    title: 'Everything Sucks',
    author: { name: 'Debbie Downer' }
  },
  {
    title: 'If You Please',
    author: { name: 'Caspar Milquetoast' }
  }
];

var names = _.map(_.compose(_.get('name'), _.get('author'))) 
// returning ['Debbie Downer', 'Caspar Milquetoast']

Теперь, основываясь на приведенных выше articles и функции names, создайте логическую функцию, которая сообщает, написал ли данный человек какую-либо из статей.

isAuthor('New Guy', articles) //false
isAuthor('Debbie Downer', articles)//true

Мои попытки приведены ниже

var isAuthor = (name, articles) => {
    return _.compose(_.contains(name), names(articles))
};

Однако он не работает на jsbin с ошибкой ниже.Возможно, кто-то может попытаться объяснить, что не так с моей попыткой, чтобы я мог извлечь урок из ошибки

Неизвестное ожидание ложного для равной функции (n, t) {return r.apply (this, arguments)}

1 Ответ

1 голос
/ 24 апреля 2019

Compose возвращает функцию, поэтому вам нужно передать articles этой функции.Compose передаст articles в getNames и передаст результат getNames в contains(name) (который также возвращает функцию), который будет обрабатывать имена авторов, и вернет логическое значение result:

const { map, path, compose, contains } = R

const getNames = map(path(['author', 'name']))

const isAuthor = (name) => compose(
  contains(name),
  getNames
)

const articles = [{"title":"Everything Sucks","author":{"name":"Debbie Downer"}},{"title":"If You Please","author":{"name":"Caspar Milquetoast"}}]

console.log(isAuthor('New Guy')(articles)) //false
console.log(isAuthor('Debbie Downer')(articles)) //true
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.js"></script>
...