有人能解释一下如何正确编写这个Javascript函数吗?
我在找人告诉我哪里出错了。说明如下: 编写以下函数(使用歌曲数组确定要返回的内容)。 getSongsNamesByArtist-此函数需要一个字符串作为参数 并返回一个数组,该数组仅包含中那些歌曲的名称 艺术家属性等于字符串的歌曲数组 这是传递给它的 所以我这样做了:有人能解释一下如何正确编写这个Javascript函数吗?,javascript,arrays,loops,Javascript,Arrays,Loops,我在找人告诉我哪里出错了。说明如下: 编写以下函数(使用歌曲数组确定要返回的内容)。 getSongsNamesByArtist-此函数需要一个字符串作为参数 并返回一个数组,该数组仅包含中那些歌曲的名称 艺术家属性等于字符串的歌曲数组 这是传递给它的 所以我这样做了: let songs = []; function createSong(name, artist) { let song = { name: name, artist: artist
let songs = [];
function createSong(name, artist) {
let song = {
name: name,
artist: artist
}
songs.push(song);
return song;
}
var heroes = new createSong("Heroes", "Bowie");
var jubileeStreet = new createSong("Jubilee Street", "Nick Cave");
var buena = new createSong("Buena", "Morphine");
var changes = new createSong("Changes", "Bowie");
var belaLugosi = new createSong("Bela Lugosi is Dead", "Bauhaus");
// I could get only this far:
function getSongsNamesByArtist(artist) {
let names = [];
for (let i = 0; i < songs.length; i++) {
let song = songs[i];
if (song.artist === artist) {
names.push(song.name);
return names;
}
}
}
console.log(getSongsNamesByArtist("Bowie")) // returns: [ 'Heroes' ], but not both of them.
let songs=[];
函数createSong(名称、艺术家){
让歌曲={
姓名:姓名,,
艺人:艺人
}
歌曲。推(歌曲);
返回歌曲;
}
var HEROLES=新创作歌曲(“英雄”、“鲍伊”);
var jubileeStreet=新创作歌曲(“朱比利街”、“尼克洞”);
var buena=新创作歌曲(“buena”,“吗啡”);
var changes=新的createSong(“变更”、“Bowie”);
var belaLugosi=新创作歌曲(“Bela Lugosi死了”,“包豪斯”);
//我只能走这么远:
函数getSongsNamesByArtist(艺术家){
让名称=[];
for(设i=0;i
你能告诉我哪里出了错吗?
谢谢你的时间 找到第一个匹配项后,您将立即返回。你必须在外面做循环。更新你的方法如下
let songs=[];
函数createSong(名称、艺术家){
让歌曲={
姓名:姓名,,
艺人:艺人
}
歌曲。推(歌曲);
返回歌曲;
}
var HEROLES=新创作歌曲(“英雄”、“鲍伊”);
var jubileeStreet=新创作歌曲(“朱比利街”、“尼克洞”);
var buena=新创作歌曲(“buena”,“吗啡”);
var changes=新的createSong(“变更”、“Bowie”);
var belaLugosi=新创作歌曲(“Bela Lugosi死了”,“包豪斯”);
//我只能走这么远:
函数getSongsNamesByArtist(艺术家){
让名称=[];
for(设i=0;i log(getSongsNamesByArtist(“Bowie”))
问题是您在if语句中提前返回。因此,一旦找到匹配项,就返回结果
function getSongsNamesByArtist(artist) {
let names = [];
for (let i = 0; i < songs.length; i++) {
let song = songs[i];
if (song.artist === artist) {
names.push(song.name);
return names; // <- here is your problem
}
}
}
谢谢你找到它!不用担心:)@meadow,你介意把答案标记为已解决吗?谢谢你看一下!如果你同意这个答案,我希望你不会介意投票并接受它,以获得更好的可视性
function getSongsNamesByArtist(artist) {
let names = [];
for (let i = 0; i < songs.length; i++) {
let song = songs[i];
if (song.artist === artist) {
names.push(song.name);
}
}
return names; // <- here is where you should return
}
function getSongsNamesByArtist(artist) {
return songs.filter((song) => {
// Filter out the artist you are looking for
return song.artist === artist;
}).map((song) => {
// Reformat your output to only contain the name of the song
return song.name;
});
}