下面的内容真的让我感到困惑,我试图过滤 musicData 数组,使其仅包含艺术家+姓名长度小于 25 的内容。我已经通过迭代等注销了,一切看起来都很好,所以我'我完全困惑为什么它返回一个空数组。
任何帮助将不胜感激。
const musicData = [
{ artist: 'Adele', name: '25', sales: 1731000 },
{ artist: 'Drake', name: 'Views', sales: 1608000 },
{ artist: 'Beyonce', name: 'Lemonade', sales: 1554000 },
{ artist: 'Chris Stapleton', name: 'Traveller', sales: 1085000 },
{ artist: 'Pentatonix', name: 'A Pentatonix Christmas', sales: 904000 },
{ artist: 'Original Broadway Cast Recording', name: 'Hamilton: An American Musical', sales: 820000 },
{ artist: 'Twenty One Pilots', name: 'Blurryface', sales: 738000 },
{ artist: 'Prince', name: 'The Very Best of Prince', sales: 668000 },
{ artist: 'Rihanna', name: 'Anti', sales: 603000 },
{ artist: 'Justin Bieber', name: 'Purpose', sales: 554000 }
];
var totalAlbumSales=musicData.filter((curr) => {
curr.artist.length+curr.name.length <25
})
最佳答案
您忘记了 return
关键字来指示应返回到新数组的内容。如果没有它,您只是执行一条语句。
由于确定过滤数组中应包含哪些内容的逻辑很容易由许多语句组成,因此需要 return
关键字来明确指示结果中包含哪些内容。
请参阅有关 Array.filter() 的文档
const musicData = [
{ artist: 'Adele', name: '25', sales: 1731000 },
{ artist: 'Drake', name: 'Views', sales: 1608000 },
{ artist: 'Beyonce', name: 'Lemonade', sales: 1554000 },
{ artist: 'Chris Stapleton', name: 'Traveller', sales: 1085000 },
{ artist: 'Pentatonix', name: 'A Pentatonix Christmas', sales: 904000 },
{ artist: 'Original Broadway Cast Recording', name: 'Hamilton: An American Musical', sales: 820000 },
{ artist: 'Twenty One Pilots', name: 'Blurryface', sales: 738000 },
{ artist: 'Prince', name: 'The Very Best of Prince', sales: 668000 },
{ artist: 'Rihanna', name: 'Anti', sales: 603000 },
{ artist: 'Justin Bieber', name: 'Purpose', sales: 554000 }
];
var totalAlbumSales=musicData.filter((curr) => {
return curr.artist.length + curr.name.length < 25
})
console.log(totalAlbumSales);
关于javascript - 为什么 Array .filter 方法返回空数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49945602/