[英]Trying to return an object of an array returning undefined using the find() function
我正在尝试返回给定指定曲目的专辑 object。 给定这个数组:
const albumCollection = [
{
id: 2125,
title: 'Use Your Illusion',
artist: "Guns N' Roses",
tracks: ['November Rain', "Don't Cry"]
},
{
id: 2975,
title: '1999',
artist: 'Prince',
tracks: ['1999', 'Little Red Corvette']
},
{
id: 1257,
title: 'Transformer',
artist: 'Lou Reed',
tracks: ['Vicious', 'Perfect Day', 'Walking on the Wild Side']
},
并使用以下 function,注释和未注释的代码都返回未定义。 我试图理解为什么。 我想要做的是根据track
名称将专辑作为 object 返回。
function getAlbumWithTrack(track) {
/*
const result = albumCollection.find((item) => item.id === track);
console.log(result);
*/
return albumCollection.find(function (title) {
return title.track === track;
});
}
console.log(getAlbumWithTrack('Little Red Corvette'));
console.log(getAlbumWithTrack('November Rain'));
console.log(getAlbumWithTrack('perfect day'));
在这条线上:
return title.track === track;
您的对象上没有名为track
的属性。 它称为tracks
,它是一个数组,因此它永远不会等于字符串值。 我怀疑你正在寻找这个:
return title.tracks.includes(track);
例如:
const albumCollection = [ { id: 2125, title: 'Use Your Illusion', artist: "Guns N' Roses", tracks: ['November Rain', "Don't Cry"] }, { id: 2975, title: '1999', artist: 'Prince', tracks: ['1999', 'Little Red Corvette'] }, { id: 1257, title: 'Transformer', artist: 'Lou Reed', tracks: ['Vicious', 'Perfect Day', 'Walking on the Wild Side'] } ]; function getAlbumWithTrack(track) { return albumCollection.find(function (title) { return title.tracks.includes(track); }); } console.log(getAlbumWithTrack('Little Red Corvette')); console.log(getAlbumWithTrack('November Rain')); console.log(getAlbumWithTrack('perfect day'));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.