Javascript - 检查两个数组的相同值

时间:2018-04-03 09:40:45

标签: javascript arrays

我有三个阵列。一个具有静态值,另一个具有动态值,一个数组将填充两个数组中相等的值。

我想遍历数组并搜索相等的值。 找到相等的值后,该值应放在另一个数组中。

这样的事情:

Array1 = ["Store1", "Store2", "Store3", "Store4"];
Array2 = ["Store6", "Store1", "Store3", "Store999"];
MatchedArray = ["Store1", "Store3"]; // should be filled with this

然而, 我不喜欢两个for循环的想法,比如:

  for(var arr1 = 0; arr1 < Array1.length; i++){
    for(var arr2 = 0; arr2 < Array2.length; i++){
      if(Array1[arr1].toLowerCase() == Array2[arr2].toLowerCase(){
        console.log('store found');
        duplicateArray.push(Array1[i].toLowerCase());
      }
    }
  }

我想知道如何使用.map或过滤器功能或其他一些方法来实现这一目标。

6 个答案:

答案 0 :(得分:4)

您可以结合使用Array#filterArray#includes

const arr1 = [ 'Store1', 'Store2', 'Store3', 'Store4'];
let arr2 = [ 'Store6', 'Store1', 'Store3', 'Store999'];

let res = arr2.filter(e => arr1.includes(e));
console.log(res);

答案 1 :(得分:2)

或制作通用数组交集函数

Invalid command 'WSGIDaemonProcess', perhaps misspelled or defined by a module not included in the server configuration

答案 2 :(得分:1)

Filter其中一个数组,并使用Array.includes()检查另一个数组是否包含该项:

var Array1 = [ 'Store1', 'Store2', 'Store3', 'Store4'];
var Array2 = [ 'Store6', 'Store1', 'Store3', 'Store999'];
var MatchedArray = Array1.filter(function(s) {
  return Array2.includes(s);
});

console.log(MatchedArray);

答案 3 :(得分:1)

var Array1 = [ "Store1", "Store2", "Store3", "Store4"];
var Array2 = [ "Store6", "Store1", "Store3", "Store999"];

var Array3 = Array1 .filter(function(val) {
return Array2 .indexOf(val) != -1;
});

Array3
(2) ["Store1", "Store3"]

答案 4 :(得分:0)

您可以使用array.filter方法获得所需的结果,

order

此函数根据给定条件过滤数组项。这里的条件是我检查val是否存在于arr2中。

答案 5 :(得分:0)

如果您考虑Underscore.js here is the way进行此类操作,可以使用任意数量的数组

var Array1 = [ 'Store1', 'Store2', 'Store3', 'Store4'];
var Array2 = [ 'Store6', 'Store1', 'Store3', 'Store999'];
var Array3 = [ 'Store1', 'Store5', 'Store3', 'Store201'];
var common = _.intersection( Array1 ,Array2, Array3);
console.log(common);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>