在循环/条件语句中未获得预期的回报

时间:2019-04-30 16:15:20

标签: javascript

条件/循环语句无法正常工作。

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条件。

第一个函数以对象的形式将相册添加到数组。

2 个答案:

答案 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,则功能将停止。