我有三个阵列。一个具有静态值,另一个具有动态值,一个数组将填充两个数组中相等的值。
我想遍历数组并搜索相等的值。 找到相等的值后,该值应放在另一个数组中。
这样的事情:
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或过滤器功能或其他一些方法来实现这一目标。
答案 0 :(得分:4)
您可以结合使用Array#filter
和Array#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>