javascript - 比较两个数组时找到第一个匹配值javascript

标签 javascript arrays loops for-loop

我正在尝试找到 Breeds 数组和 dogs 数组之间的匹配项。如何返回找到的第一个匹配项。这就是我所拥有的,但似乎不起作用,而且我无法完全找到错误。谢谢

var dogs = ["pug", "husky", "hound", "poodle"];

function findTheBreed(dogs) {
    var breeds = ["terrier", "mix", "lab", "hound"];
 for(let i = 0; i < dogs.length; i++) {
   for (let b = 0; b < breeds.length; b++) {
     if(dogs[i] === breeds[b]) {
       return breeds[b]
      } else {
       return "no match"
      }
    }
   }
 }

最佳答案

您在第一次不匹配时返回 false,而您应该继续迭代。

返回“不匹配”移至迭代完所有内容之后。

jsfiddle

您也可以在此处使用indexOf:

function findTheBreed(dogs) {
    var breeds = ["terrier", "mix", "lab", "hound"];
    for(let i = 0; i < dogs.length; i++) {
      if(breeds.indexOf(dogs[i]) != -1){
      return dogs[i];
    }
  }   
  return "no match";
}

jsfiddle

另一种(我认为最好的)路线是使用 Array.filter功能并检索整个匹配数组。

  var breeds = ["terrier", "mix", "lab", "hound", "snickerdoodle"];
    var filtered = breeds.filter(
    function (elem) {
      return dogs.indexOf(elem) != -1
    }
  );
  return filtered;

jsfiddle

关于javascript - 比较两个数组时找到第一个匹配值javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43985345/

相关文章:

arrays - 从数组状态ReactJS中删除一个对象

javascript - 当数据库img标签中没有条目时仍然显示空框

php - 如何在 foreach 循环中使用公共(public)索引键传递多个值?

javascript - 标记不显示在 map api V3 中

javascript - 使用 Javascript 定位

javascript - 使用 onclick 和 onsubmit 提交表单

Java初学者分配。 : insert user controlled random numbers in a file and sum it

javascript - Carousel slick.js + bootstrap 列宽问题

javascript - 将 php 数组打乱为 javascript 数组

java - 为什么允许向上转换数组,而不允许使用泛型?