3 回答

TA貢獻1852條經(jīng)驗 獲得超7個贊
問題在于夏季減速器。它需要一個包含屬性的對象。但是,它返回一個數(shù)字。第一次調(diào)用 summer 時,它接收具有屬性的對象,但是,第二次調(diào)用它時,它會收到一個數(shù)字(不包含 like 的屬性)。likesdummyAuthlikes
您可以通過使 summer 返回具有屬性的對象來解決此問題。likes
const mostLikes = (blogs) => {
if (!blogs.length) {
return 0;
}
const distinctAuthors = [...new Set(blogs.map((blog) => blog.author))];
const summer = (prev, comp) => ({ likes: prev.likes + comp.likes });
const dummyAuth = {
author: 'hmm',
likes: 0,
}
const authorsWithLikes = distinctAuthors.map((author) => ({
author,
likes: blogs.filter((n) => n.author === author).reduce(summer, dummyAuth ).likes, // note: you have to access the `likes` property
}));
const reducer = (prev, comp) => (prev[1] > comp[1] ? prev : comp);
return authorsWithLikes.reduce(reducer, authorsWithLikes[0]);
};

TA貢獻1818條經(jīng)驗 獲得超7個贊
下面是類型對象,代碼嘗試用對象添加一個數(shù)字。而不是聲明為對象,僅以 0 初始化dummyAuthdummyAuthlikes
const blogs = [{
_id: '5a422a851b54a676234d17f7',
title: 'React patterns',
author: 'Michael Chan',
url: 'https://reactpatterns.com/',
likes: 7,
__v: 0,
}, {
_id: '5a422aa71b54a676234d17f8',
title: 'Go To Statement Considered Harmful',
author: 'Edsger W. Dijkstra',
url: 'http://www.u.arizona.edu/~rubinson/copyright_violations/Go_To_Considered_Harmful.html',
likes: 5,
__v: 0,
}, {
_id: '5a422b3a1b54a676234d17f9',
title: 'Canonical string reduction',
author: 'Edsger W. Dijkstra',
url: 'http://www.cs.utexas.edu/~EWD/transcriptions/EWD08xx/EWD808.html',
likes: 12,
__v: 0,
}, {
_id: '5a422b891b54a676234d17fa',
title: 'First class tests',
author: 'Robert C. Martin',
url: 'http://blog.cleancoder.com/uncle-bob/2017/05/05/TestDefinitions.htmll',
likes: 10,
__v: 0,
}, {
_id: '5a422ba71b54a676234d17fb',
title: 'TDD harms architecture',
author: 'Robert C. Martin',
url: 'http://blog.cleancoder.com/uncle-bob/2017/03/03/TDD-Harms-Architecture.html',
likes: 0,
__v: 0,
}, {
_id: '5a422bc61b54a676234d17fc',
title: 'Type wars',
author: 'Robert C. Martin',
url: 'http://blog.cleancoder.com/uncle-bob/2016/05/01/TypeWars.html',
likes: 2,
__v: 0,
}, ]
const mostLikes = (blogs) => {
if (!blogs.length) {
return 0
}
const distinctAuthors = [...new Set(blogs.map((blog) => blog.author))];
const summer = (prev, comp) => prev + comp.likes;
const likes = 0;
const authorsWithLikes = distinctAuthors.map((author) => {
return {
author,
likes: blogs.filter((n) => n.author === author).reduce(summer, likes)
};
});
console.log(authorsWithLikes);
const reducer = (prev, comp) => (prev[1] > comp[1] ? prev : comp);
return authorsWithLikes.reduce(reducer, authorsWithLikes[0])
};
mostLikes(blogs)
添加回答
舉報