javascript - 如何测试一个数组是否包含多个元素?
问题描述
比较两个数组并返回一个新数组,其中包含仅在两个给定数组之一中找到的任何项目,但不能同时在两个给定数组中找到。换句话说,返回两个数组的对称差。
注意
您可以按任何顺序返回数组及其元素。
我试图通过遍历数组的每个元素来解决这个问题,并说如果数组中有多个这些元素,那么我们不希望它被返回。
注意:我比这个问题更进一步,基本上是在尝试解决:“返回在任一数组中只出现一次的任何元素。” 如何拒绝多次出现的任何元素?
我的代码不起作用:
function diffArray(arr1, arr2) {
var newArr = [...arr1, ...arr2];
let a = newArr.forEach();
function getOccurrence(newArr, a) {
return newArr.filter((v) => (v === value)).length;
}
}
diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]);
解决方案
给定数据:
const arr1 = [10, 20, 30, 40]
const arr2 = [10, 20, 50, 60]
预期结果:
Result: [30, 40, 50, 60];
解决方案是:
function diffArray(arr1, arr2){
// combine elements from both arrays
const allElements = [...arr1, ...arr2]
// filter elements not available in arr1
const filteredArr1 = allElements.filter(element => !arr1.includes(element));
// filter elements not available in arr2
const filteredArr2 = allElements.filter(element => !arr2.includes(element));
// return filtered elements from both arr1 and arr2
return [...filteredArr1, ...filteredArr2];
}
// testing the code
const result = diffArray([10, 20, 30, 40], [10, 20, 50, 60])
console.log(result);
注意:结果将是未排序的,您可以使用sort()
函数对其进行排序。
我希望上述解决方案为您提供了一些想法和解释。
推荐阅读
- javascript - 这个函数参数:访问私有成员
- c# - 是否可以为 Dictionary 对象创建 Avro 架构
- java - 调用 void 方法但遵循参数
- ruby-on-rails - 为什么运行“rails runner”不会将日志打印到控制台?
- google-apps-script - 如何根据表单提交创建事件?
- python-3.x - Discord.py 的重启命令
- ionic-framework - Ionic ion-refresh 适用于 android 和 web,但不适用于 iOS
- vuejs2 - 如何将 Pinia 与 Nuxt、composition-api (vue2) 和 SSR 一起使用?
- vba - 在没有 Acrobat 的情况下通过 vba 将自定义文本框添加到 PDF
- powershell - 使用计算属性时加速 powershell 命令