条件/循环语句无法正常工作。
function addToCollection( title, artist, year) {
collection.push({title, artist, year}); // adds album to array
return {title, artist, year}; // returns newly created object
} // end of addToCollection function
console.log( addToCollection('The Real Thing', 'Faith No More',
1989));
console.log( addToCollection('Angel Dust', 'Faith No More', 1992));
console.log( addToCollection( 'Nevermind', 'Nirvana', 1991));
console.log( addToCollection( 'Vulgar Display of Power', 'Pantera',
1991));
function findRecord ( title ) { //function not working!!
for (let i = 0; i < collection.length; i++) {
if (collection[i].title === title) {
return collection[i].title.indexOf(title);
} else {
return false;
}
}
}
我的条件语句仅针对i = 0进行检查,而不会遍历数组的其余部分。除非我正在检查第一项(自然为0),否则它始终返回false。
这个想法是使一个函数在数组(专辑标题)中找到一个值,然后返回其索引。如果它不在数组中,则返回false。
我认为这是正在发生的事情,如果我要查找的值不在array [0]上,我的代码将直接转到else条件。
第一个函数以对象的形式将相册添加到数组。
答案 0 :(得分:2)
将return false
放入循环之外。这样,您将在返回false之前检查所有记录是否成功
function findRecord ( title ) { //function not working!!
for (let i = 0; i < collection.length; i++) {
if (collection[i].title === title) {
return collection[i].title.indexOf(title);
}
}
return false;
}
答案 1 :(得分:0)
当函数触摸return
时,该函数停止运行,这就是为什么它不会进入i=1
的原因,每次if条件不匹配时,它都会跳转到else语句,并返回false,则功能将停止。