基于另一个数组过滤 JavaScript 数组
在本文中,我们将学习如何在 JavaScript 中基于另一个数组过滤数组。
JavaScript 中的数组用于存储不同的元素。这些元素存储在连续的内存位置。通过使用索引号,我们可以访问数组中存在的任何或每个数据元素。索引号从 0 开始。
语法
以下是 JavaScript 中数组的语法:
const array_name = [item1, item2, ...];
以下是 JavaScript 中数组的简单声明:
Const colors = ['Blue', 'Limegreen', 'Orange', 'Black'];
让我们假设一些简单的输入和输出场景:
让我们假设一个场景,我们有两个数组包含其中的元素,并且两个数组中有一些公共元素。我们需要过滤公共元素。
Input arr1 = [1, 3, 7, 10]; arr2 = [3, 7]; Output = [1, 10];
考虑另一个场景,两个数组中都有公共元素(字符串),过滤公共字符串并返回唯一元素。
Input arr1 = ['ravi', 'kunal', 'hari']; arr2 = ['ravi', 'sharma']; Output arr1 = ['kunal', 'hari'] arr2 = ['sharma']
使用 array.filter() 方法
filter() 方法使用函数指定的测试生成一个包含通过测试的元素的新数组。对于空元素,filter() 方法不执行函数。
示例
以下是使用 array.filter() 方法基于另一个数组过滤数组的示例。
<!DOCTYPE html> <html> <head> <title>Filtering array on another array</title> </head> <body> <script> const array1 = [1, 3, 7, 10, 17, 18, 33, 45, 99]; const array2 = [10, 17, 33]; const filterArray = (array1, array2) => { const filtered = array1.filter(el => { return array2.indexOf(el) === -1; }); return filtered; }; document.write(filterArray(array1, array2)); </script> </body> </html>
示例
以下是使用 filter() 方法执行给定任务的另一个示例。
<!DOCTYPE html> <html> <head> <title>Filtering array on another array</title> </head> <body> <script> var arr = [6, 1, 9, 4, 7].filter( function(e) { return this.indexOf(e) < 0; }, [1, 4, 7] ); document.write("Filtered array is: ", arr); </script> </body> </html>
示例
下面的程序是使用 filter() 方法解决任务的另一种方法:
<!DOCTYPE html> <html> <head> <title>Filtering array on another array</title> </head> <body> <script> let arr1 = ['Govind', 'Alekhya', 'Sarika', 'Raviteja', 'Pooja']; let arr2 = ['Alekhya', 'Pooja']; arr1 = arr1.filter(function(item) { return !arr2.includes(item); }) document.write(arr1); </script> </body> </html>
示例
以下是使用 filter() 方法和 includes() 方法解决任务的另一种方法。
<!DOCTYPE html> <html> <head> <title>Filtering array on another array</title> </head> <body> <script> function filter_array(){ let arr1 = ['s', 'r', 'a', 'k', 'i']; let arr2 = ['n', 's', 'k']; var tempArray = arr2.filter(function(item) { return !arr1.includes(item); }); arr1 = arr1.filter(function(item) { return !arr2.includes(item); }); arr2 = tempArray; document.write(arr1, "<br>"); document.write(arr2); } filter_array(); </script> </body> </html>
广告