繁体   English   中英

尝试使用 find() function 返回未定义的数组的 object

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM