资讯专栏INFORMATION COLUMN

1.判断两个数组是否“相等”2.取两个数组的交并差集

ispring / 1595人阅读

Set是ES6种新增的数据结构,有点类似与数组,但它的成员的值都是唯一的

1.取两个数组的交并差集

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

var set1 = new Set([...a,...b]);
var set2 = new Set(a.filter((item)=>{
    return b.indexOf(item) > -1
}));
var set3 = new Set(a.filter((item)=>{
    return b.indexOf(item) == -1
}))
console.log("并集:",set1);//Set{1,2,3,4,5,6}
console.log("交集:",set2);//Set{3,4}
console.log("差集:",set3);//Set{1,2}

2.判断两个数组是否“相等”

有两种方法

1 JSON.stringify()

 var a = ["1",2];
 var b = [1,2];
 console.log(JSON.stringify(a));//["1",2]
 console.log(JSON.stringify(b));//[1,2]
 console.log(JSON.stringify(a) == JSON.stringify(b));//false

2 不允使用JSON.stringify时

   Array.prototype.equals = function (arr) {
        if (!arr)
            return false;
        if (this.length != arr.length)
            return false;
        for (var i = 0, l = this.length; i < l; i++) {
            if (Array.isArray(this[i]) && Array.isArray(arr[i])) {
                this[i].equals(arr[i]);
            } 
            //else if(Object.prototype.toString.call(this[i])==="[object Object]" && Object.prototype.toString.call(arr[i])==="[object Object]") {
            //考虑到数组中包含对象,调用判断对象是否"相等"的方法,此方法不考虑数组中有对象的情况
            //}
            else {
                // console.log(this[i]);
                // console.log(arr[i]);
               if(this[i]!=arr[i]){
                   return false;
               }
            }
        }
        return true;
    }

注意 不要用 X.toString();

 var a = ["1",2];
 var b = [1,2];
 console.log(a.toString());//1,2
 console.log(b.toString());//1,2
 console.log(a.toString() == b.toString());//true

转换成字符串后,导致字符串"1"和数字1相等。

微信公众号:前端实习日记

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/94674.html

相关文章

  • 关于数组array_diff(array1, array2)求差集来比较数组是否相等的问题细究

    摘要:无意中发现很多朋友都喜欢使用来判断两个数组是否相等,我自己也偶尔会这么使用但是今天我在写代码的过程中无意发现这么做是不准确的。 无意中发现很多朋友都喜欢使用array_diff(array1, array2)来判断两个数组是否相等, 我自己也偶尔会这么使用 但是今天我在写代码的过程中无意发现这么做是不准确的。 首先我们来看一下这个函数的释义(PHP Manual): 对比 array1...

    CodeSheep 评论0 收藏0
  • 每日 30 秒 ⏱ 两个数组中的差集

    简介 数组、差集、函数 根据给出的函数找出两个数组中的差集。 const differenceBy = (a, b, fn) => { const s = new Set(b.map(fn)); return a.filter(el => !s.has(fn(el))); }; 代码分析 这段代码使用了ES2015中定义的 Set 对象。Set 对象的值的特点是不含有重复的值,这个特性可以...

    JerryC 评论0 收藏0
  • 两个数组 之间 差集,交集,并集

    摘要:数组判断是否含有某个元素数组去重交集差集并集数组数组交集是差集是并集是临时写,有问题可以交流,对于其他的余集补集合集懒得区分了上面三种挺常用的,仅供参考。 Document //数组判断是否含有某个元素 Array.prototype.contains = function (obj) { ...

    joyqi 评论0 收藏0
  • JS数据结构与算法_集合&字典

    摘要:上一篇数据结构与算法链表写在前面说明数据结构与算法系列文章的代码和示例均可在此找到一集合集合数据结构集合是一种包含不同元素的数据结构。集合中的元素成为成员。 上一篇:JS数据结构与算法_链表 写在前面 说明:JS数据结构与算法 系列文章的代码和示例均可在此找到 一、集合Set 1.1 集合数据结构 集合set是一种包含不同元素的数据结构。集合中的元素成为成员。集合的两个最重要特性是:...

    sf_wangchong 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<