比较两个数组,找出不一样的数据组成新数组

本文介绍三种JavaScript数组对比的方法,通过示例展示了如何找出两个数组中不相同的数据,并组合成新的数组。每种方法都有其特点,适合不同的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、现在有两个数组

let arr1 = [1, 2, 3, 4, 5, 6, 7]

let arr2 = [1, 2, 3, 4, 8]

2、期望 arr1 和 arr2比较之后,得到新数组,如下:

let newArr = [5, 6, 7, 8]

3、实现

// 方式1
let arr1 = [1, 2, 3, 4, 5, 6, 7]
let arr2 = [1, 2, 3, 4]
let res1 = [], res2 = [], res = []
res1.push( arr1.filter(item => {
	return !arr2.includes(item)
}))
res2.push( arr2.filter(item => {
	return !arr1.includes(item)
}))
res = res1.flat().concat(res2.flat())


// 方式2
let arr1 = [1, 2, 3, 4, 5, 6, 7]
let arr2 = [1, 2, 3, 4]
let res1 = [], res2 = [], res = []
res1.push( arr1.filter(item => {
    return arr2.indexOf(item) === -1
}))
res2.push( arr2.filter(item => {
    return arr1.indexOf(item) === -1
}))
res = res1.flat().concat(res2.flat())


// 方式3
let arr1 = [1, 2, 3, 4, 5, 6, 7]
let arr2 = [1, 2, 3, 4]
let res1 = [], res2 = [], res = []
for(let i = 0; i < arr1.length; i++){
	if(!arr2.includes(arr1[i])){
	    res1.push(arr1[i]);
	}
}
for(let i = 0; i < arr2.length; i++){
	if(!arr1.includes(arr2[i])){
	    res2.push(arr2[i]);
	}
}
res = res1.flat().concat(res2.flat())
console.log(res) // res就是比较后,不同的数据组成的新数组

就记录到这里,祝大家开心
在这里插入图片描述

回答: 要找出两个数组不同,可以使用以下方法。首先,将两个数组分别存储在nums1和nums2中。然后,创建一个空的列表answer,用于存储不同。接下来,使用for循环遍历nums1中的,判断是否在nums2中,如果在,则将其添加到answer\[0\]中。然后,再使用for循环遍历nums2中的,判断是否在nums1中,如果在,则将其添加到answer\[1\]中。为了避免重复的出现在answer中,可以使用set函来去除重复的。最后,输出answer即可得到不同。\[1\] 示例代码如下: ``` nums1 = \[1, 2, 3, 4, 5, 6, 7\] nums2 = \[1, 2, 3, 4\] answer = \[\[\], \[\]\] for i in set(nums1): if i not in nums2: answer\[0\].append(i) for j in set(nums2): if j not in nums1: answer\[1\].append(j) print(answer) ``` 输出结果为:\[\[5, 6, 7\], \[\]\],表示nums1中的不同为\[5, 6, 7\],nums2中的不同为空列表。\[2\] 另外,还可以使用其他方法实现,比如使用filter函和indexOf函来筛选不同。具体代码如下: ``` nums1 = \[1, 2, 3, 4, 5, 6, 7\] nums2 = \[1, 2, 3, 4\] res1 = \[\] res2 = \[\] res = \[\] res1.append(list(filter(lambda x: x not in nums2, nums1))) res2.append(list(filter(lambda x: x not in nums1, nums2))) res = res1\[0\] + res2\[0\] print(res) ``` 输出结果为:\[5, 6, 7\],与之前的方法得到的结果相同。\[3\] #### 引用[.reference_title] - *1* *2* [找出数组不同](https://blog.youkuaiyun.com/gschen_cn/article/details/124010765)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [比较两个数组找出一样数据组成新数组](https://blog.youkuaiyun.com/qq_37600506/article/details/122602819)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值