【问题标题】:Matching Values from Multiple Arrays匹配来自多个数组的值
【发布时间】:2017-11-17 20:34:35
【问题描述】:

我对编码只有一个基本的了解,希望对你有所帮助。我有这个 js 代码,为数组中所有香肠狗的出现提供了一个真实的错误日志:

var myAnimal = "Sausage Dog";
var arrayAnimal =["Sausage Dog", "Tiger", "Sausage Dog", "Crocodile", "Lion"];
for (var i = 0; i < arrayAnimal.length; i++) {
  if(myAnimal == arrayAnimal[i]) {
     console.log("True");
     } else {
       console.log("False");
     }
}

如果var myAnimal 是一个包含多个字符串的数组,我将如何执行相同的任务?

因此,它将检查 myAnimal 中的每只动物与 var arrayAnimal 中的每只动物,并为所有事件返回真/假。

有没有办法做到这一点?

【问题讨论】:

标签: javascript arrays for-loop string-matching


【解决方案1】:

类似这样的: 在 arrayAnimal 循环内循环 myAnimal 数组 - 检查它们是否相等。

var myAnimal =  ["Sausage Dog", "Tiger"];
var arrayAnimal = ["Sausage Dog", "Tiger", "Sausage Dog", "Crocodile", "Lion"];
for (var i = 0; i < arrayAnimal.length; i++) {
     for (var j = 0; j < myAnimal.length; j++) {
     		if(arrayAnimal[i] == myAnimal[j]) console.log('match');
     }
}

【讨论】:

  • 非常感谢,这真的很有帮助!将其提升到更抽象的级别 - 当 myAnimal 是一个包含正则表达式而不是上述字符串的数组时,您是否也有解决方案?
【解决方案2】:

使用 Array#reducemyAniml 数组创建字典,然后使用字典 Array#maparrayAnimal

var myAnimal = ["Sausage Dog", "Lion"];
var myAnimalDict = myAnimal.reduce(function(dict, str) {
  dict[str] = true;
  
  return dict;
}, Object.create(null));

var arrayAnimal =["Sausage Dog", "Tiger", "Sausage Dog", "Crocodile", "Lion"];

var result = arrayAnimal.map(function(str) {
  return !!myAnimalDict[str];
});

console.log(result);

【讨论】:

  • 赞成您的答案,因为它也是一种可行的方法。与上面的循环方法相比,它只需要更少的时间。
  • 实际上是 O(n),而且比在循环内有一个循环要快得多 O(n^2)
  • 我的意思正好相反,我的错。编辑评论。
【解决方案3】:
var myAnimal = ["Sausage Dog", "Tiger", "Sausage", "Crocodile", "Lion"];
var arrayAnimal =["Sausage Dog", "Tiger","Crocodile", "Lion"];
for (var i = 0; i < myAnimal.length; i++) {
    for (var j = 0; j < arrayAnimal.length; j++) {
        if (myAnimal[i] == arrayAnimal[j]) {
          $('#demo').append("True</br>");
        }
    }
}

【讨论】:

  • 虽然代码本身可以回答这个问题,但最好还是提供解释和任何相关资源。
猜你喜欢
  • 2017-07-19
  • 2016-06-26
  • 2023-02-04
  • 1970-01-01
  • 2012-04-24
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 1970-01-01
相关资源
最近更新 更多