当键是字符串时如何比较两个数组 - JavaScript

javascriptweb developmentfront end technology

当键是字符串时,在 JavaScript 中比较两个数组可能会很棘手。字符串比较区分大小写,需要特殊处理才能确保结果正确。

幸运的是,当键是 JavaScript 中的字符串时,您可以使用多种方法来比较两个数组。在本文中,我们将讨论如何使用各种方法(例如 map()、Include()、Intersection() 和 Arrayfilter())有效地比较两个以字符串为键的数组。

JavaScript 中的字符串用于存储和修改文本。JavaScript 中的字符串定义为用引号括起来的零个或多个字符。可以表示为文本的数据可以存储在字符串中。使用 String() 构造函数,可以将字符串创建为原语、字符串文字或对象。

在 JavaScript 中使用 map()

Map() 是一种内置 JavaScript 方法,它创建一个新数组,并在数组中的每个元素上调用提供的函数。它可用于遍历数组、修改每个项目,并将修改后的项目作为新数组返回。对于空项目,map() 不会运行该函数。初始数组不受 map() 的影响。

语法

以下是 map() 的语法>

array.map(function(currentValue, index, arr), thisValue)

JavaScript 中的 include()

在 JavaScript 中,include() 方法用于确定 string 是否包含另一个子字符串。返回的结果要么是 true,要么是 false。

语法

以下是 include() 的语法>

string.includes(searchvalue, start)

示例

在下面的示例中,我们运行一个脚本,使用 map()include() 比较两个数组。

<!DOCTYPE html>
<html>
<body>
   <script>
      const arr1 = [
         { "car": "Bmw"},
         { "car": "BENZ"},
         { "car": "Audi"},
         { "car": "Jaguar"}
      ];
      const arr2 = [
         { "car": "Audi"},
         { "car": "City"},
         { "car": "Jaguar"},
         { "car": "Verna" }
      ];
      const extractValue = ({ 'car': car }) => car;
      const duplicateValues = arr1
      .map(extractValue)
      .filter(x => arr2
         .map(extractValue)
         .includes(x)
      );
      document.write(JSON.stringify(duplicateValues));
   </script>
</body>
</html>

脚本执行时,将生成一个输出,其中包含打印在 Web 浏览器上的 数组。这是由触发的事件引起的,该事件使两个 数组 相互比较并提供新的 数组

示例

考虑以下示例,其中我们使用 交集;在这种情况下,它首先查找最长的 数组 并进行过滤,因此 最短的数组 用作要在其中搜索的 数组

<!DOCTYPE html>
<html>
<body>
   <script>
      const first = [
         { "bike": "Rx100"},
         { "bike": "R15"},
         { "bike": "Revolt"},
         { "bike": "Duke"}
      ]
      const second = [
         { "bike": "Deluxe"},
         { "bike": "Rx100"},
         { "bike": "Splendor"}
      ]
      const intersection = (longer, shorter, key) => {
         let tmp;
         if (shorter.length > longer.length) {
            tmp = shorter, shorter = longer, longer = tmp;
         }
         const vals = shorter.map(entry => entry[key]);
         return longer.filter(entry => vals.find(v => v ===entry[key]));
      }
      const key = 'bike';
      const third = intersection(first, second, key);
      document.write(JSON.stringify(third.flatMap(Object.values)));
   </script>
</body>
</html>

运行上述脚本时,将弹出输出窗口,在 Web 浏览器上显示 array,这是由运行脚本时触发的事件引起的。

示例

让我们看下面的示例,其中我们使用 Array.filter 来遍历第一个数组并返回在第二个数组中找到的值。

<!DOCTYPE html>
<html>
<body>
   <script>
      const array1 = [
         { "movie": "Balu"},
         { "movie": "Gabbar"},
         { "movie": "Bheem"},
      ];
      const array2 = [
         { "movie": "Jalsa"},
         { "movie": "Balu"},
      ];
      const array2String = JSON.stringify(array2);
      const duplicates = array1.filter(x =>array2String.includes(JSON.stringify(x)));
      document.write(JSON.stringify(duplicates))
   </script>
</body>
</html>

当脚本执行时,会触发事件,该事件会比较脚本中使用的两个数组并返回在网络浏览器上找到的两个数组之间的值。


相关文章