当前位置: 首页 > 知识库问答 >
问题:

javascript - js如何去掉两个数组重复的值?

凌经赋
2023-04-26
a = [1,2,3,4,5]
b = [3,4,5]

a只保留[1,2]

共有16个答案

蓬野
2023-04-26

实际上是求两个 set 的并集(union)

const union = (arr1, arr2) => Array.from(
    new Set([...arr1, ...arr2])
)
佟英武
2023-04-26
let a = [1,2,3,4,5] 
let b = [3,4,5]
console.log(Array.from(new Set([...a,...b])));  //两个都行
console.log([...(new Set([...a,...b]))]);
水浩歌
2023-04-26

下面适用于数据量较大的情况。另外,如果要去掉多个数组中重复的值,可以将多个数组转换为Set类型,然后使用交集(Intersection)等方法来实现。

const a = [1,2,3,4,5];
const b = [3,4,5];

const setA = new Set(a);
const setB = new Set(b);

const result = [...setA].filter(item => !setB.has(item));
console.log(result); // [1, 2]
乐正秦斩
2023-04-26

使用 Set 对象去重:将两个数组合并为一个数组,然后将数组转换为 Set 对象,最后将 Set 对象转换为数组即可去重。示例代码如下:

let arr1 = [1, 2, 3];
let arr2 = [2, 3, 4];
let arr3 = [...new Set([...arr1, ...arr2])];
console.log(arr3); // [1, 2, 3, 4]

使用 filter() 方法和 includes() 方法去重:对于第一个数组中的每个元素,判断第二个数组中是否包含该元素,如果不包含,则将该元素保留下来。示例代码如下:

let arr1 = [1, 2, 3];
let arr2 = [2, 3, 4];
let arr3 = arr1.filter(item => !arr2.includes(item)).concat(arr2);
console.log(arr3); // [1, 4, 2, 3]

使用 reduce() 方法和 includes() 方法去重:使用 reduce() 方法遍历第一个数组,将不在第二个数组中的元素添加到结果数组中。然后再将第二个数组中不在结果数组中的元素添加到结果数组中即可。示例代码如下:

let arr1 = [1, 2, 3];
let arr2 = [2, 3, 4];
let arr3 = arr1.reduce((prev, curr) => !arr2.includes(curr) ? prev.concat(curr) : prev, []).concat(arr2.filter(item => !arr1.includes(item)));
console.log(arr3); // [1, 2, 3, 4]
沈华晖
2023-04-26
function difference(a, b) {
    for (var i = 0; i < b.length; ++i) {
        for (var j = a.length; j--;) {
            if (b[i] === a[j]) a.splice(j, 1);
        }
    }
    return a;
}
console.log(difference(a, b));
夹谷浩博
2023-04-26

要从数组a中移除与数组b中重复的值,可以使用Array.prototype.filter()方法。以下是一个示例:

const a = [1, 2, 3, 4, 5];
const b = [3, 4, 5];

const result = a.filter((item) => !b.includes(item));

console.log(result); // 输出 [1, 2]
钱欣悦
2023-04-26

simply use this function

function deduplication(a, b) {
  (a.length < b.length) && ([a, b] = [b, a])
  return a.reduce((acc,cur) => (!b.includes(cur) && acc.push(cur), acc), [])
}
夏侯腾
2023-04-26

stackoverflow 搬运。
https://stackoverflow.com/questions/1723168/what-is-the-fastest-or-most-elegant-way-to-compute-a-set-difference-using-javasc

建议自己先百度一下,网上解答一大把。

const A = [1, 2, 3, 4];
const B = [1, 3, 4, 7];

const diff = A.filter(x => !B.includes(x));

console.log(diff); // [2]
戎泰
2023-04-26
var a = [1, 2, 3, 4, 5], b = [3, 4, 5];
function funm(arr1, arr2) {
  let arr = [...arr1, ...arr2];
  return arr.filter(item => !(arr1.includes(item) && arr2.includes(item)));
}
console.log(funm(a, b)); //[1,2]
万俟招
2023-04-26
const a = [1, 2, 3, 4, 5];
const b = [3, 4, 5];

const result = a.filter((value) => !b.includes(value));

console.log(result); // 输出 [1, 2]

在这段代码中,首先定义了两个数组 a 和 b,然后通过 filter() 方法对数组 a 进行过滤操作,将数组中与数组 b 中的元素相同的元素过滤掉,最终得到的结果即为去重后的数组。

在 filter() 方法中,通过箭头函数定义了一个过滤规则,即如果数组 b 中不包含当前元素,则将其保留下来,否则将其过滤掉。这里使用了 includes() 方法来判断数组 b 是否包含当前元素。

施彬彬
2023-04-26
let a = [1,2,3,4,5]
let b = [3,4,5]
let c = a.filter(item => !b.includes(item))
console.log(c)

image.png

罗安宁
2023-04-26
const a = [1, 2, 3, 4, 5];
const b = [3, 4, 5];

const result = a.filter(item => !b.includes(item));

console.log(result); // 输出 [1, 2]
仉峻
2023-04-26

lodash库的without,pull,xor方法应该都能满足你的要求

吕学
2023-04-26
a = [1,2,3,4,5]
b = [3,4,5]
var c = [...a, ...b].filter(item => !(a.includes(item) && b.includes(item)))
console.log(c)
欧阳安阳
2023-04-26

先把b中的元素放到 set 中,方便查找,O(1)内就可以查到,但若是在数组内查的话,每次都得遍历,无论是 indexOf 还是 includes。

const a = [1,2,3,4,5];
const b = [3,4,5];

const set = new Set(b);

// 过滤
const filtered = a.filter(item => !set.has(item));

console.log(filtered); // [1, 2]
公冶泰
2023-04-26
a = [1, 2, 3, 4, 5];
b = [3, 4, 5];
a = a.filter(item => b.indexOf(item) == -1);
console.log(a); // [1, 2]
 类似资料:
  • 本文向大家介绍js 两数组去除重复数值的实例,包括了js 两数组去除重复数值的实例的使用技巧和注意事项,需要的朋友参考一下 实例如下: 以上这篇js 两数组去除重复数值的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 本文向大家介绍PHP两种去掉数组重复值的方法比较,包括了PHP两种去掉数组重复值的方法比较的使用技巧和注意事项,需要的朋友参考一下 去除一个数组中的重复值,可以使用foreach方法,也可以使用array_unique方法,下面的代码两种方法都使用了。 在$intTotal比较小的情况下,比如说1000以内,$intRand的取值基本不影响结果,两者执行的时间都差不多。 测试$intTotal 大

  • 本文向大家介绍js数组如何去重?相关面试题,主要包含被问及js数组如何去重?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 方法一:indexOf循环去重 方法二:ES6 Set去重;Array.from(new Set(array)) 方法三:Object 键值对去重;把数组的值存成 Object 的 key 值,比如 Object[value1] = true,在判断另一个值的时候,如

  • 展示是这样的 正常的序号是 1,2,3,4... js 如何去掉 .0 呢 用过 Math.floor,Math.trunc 都不行

  • js 比较两个数组,并进行替换掉? 需要根据arr2对象里面的val数组里面的值[200, 300, 500]去匹配arr1数组下sk数组里面的Value的值,如果arr1数组下sk数组里面的Value的值和arr2对象里面的val数组里面的值相等就替换Name,把arr2 对象的name 赋值到sk数组里面的Name 期望得到 这样写了调试了还没效果。麻烦大佬们帮我看看

  • 有两个数组: 我是如何做到的: 我想用RxJ或其他。 如果值不是数字,例如Object。