当键为字符串时如何比较两个数组 - JavaScript
当键为字符串时,在 JavaScript 中比较两个数组可能会比较棘手。字符串比较区分大小写,需要特殊处理才能确保正确的结果。
幸运的是,在 JavaScript 中,当键为字符串时,您可以使用几种方法来比较两个数组。在本文中,我们将讨论如何使用各种方法(例如 *map()、include()、intersection() 和 Array.filter()*)有效地比较键为字符串的两个数组。
JavaScript 中的 *字符串* 用于存储和修改文本。JavaScript 中的 *字符串* 定义为用引号括起来的零个或多个字符。可以表示为文本的数据可以存储在字符串中。使用 *String()* 构造函数,可以将字符串创建为基本类型、从字符串文字或作为对象。
在 JavaScript 中使用 map()
*Map()* 是 JavaScript 的内置方法,它创建一个新数组,其中包含在数组的每个元素上调用提供的函数的结果。它可以用于迭代数组、修改每个项目并将修改后的项目作为新数组返回。对于空项目,*map()* 不会运行该函数。*map()* 不会影响初始数组。
语法
以下是 *map()* 的语法
array.map(function(currentValue, index, arr), thisValue)
JavaScript 中的 include()
在 JavaScript 中,*include()* 方法用于确定 *字符串* 是否包含另一个子字符串。结果以 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 浏览器上打印的 *数组*。这是由一个触发的事件引起的,该事件使这两个 *数组* 互相比较并提供新的 *数组*。
示例
考虑以下示例,我们在此处使用 *intersection*;在这种情况下,它首先查找最长的 *数组* 并进行过滤,因此 *最短的数组* 用作要搜索的 *数组*。
<!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.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>
当脚本执行时,事件被触发,该事件比较脚本中使用的两个数组,并在 Web 浏览器上返回这两个数组之间找到的值。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP