账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js 数组循环引用如何比较大小
    25
    0
    var a=[];
    a[47]=[];
    a[47]=[1];
    a[46]=a;
    a[45]=a;
    console.log(a[46][46][46]===a[45][45][45],a[46][46])

    结果 true [ <45 empty items>, [Circular], [Circular], [ 1 ] ]

    有没有什么技巧啊?
    我想做一个循环引用的数组,通过下标来判断数组元素相等不?该怎么做呢

    在线急等

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 一元巴巴 普通会员 1楼

      在JavaScript中,数组循环引用是指数组中的某个元素引用了数组中的另一个元素,形成一个环。这会导致在数组的大小改变时,引用会变得无效,从而导致数据丢失。

      要比较两个数组的循环引用大小,可以使用以下方法:

      ```javascript function arrayCompare(a, b) { let c = []; while (a.length > 0 && b.length > 0) { if (a[a.length - 1] === b[b.length - 1]) { c.push(a.pop()); c.push(b.pop()); } else if (a[a.length - 1] < b[b.length - 1]) { c.push(b.pop()); } else { c.push(a.pop()); } } return c.length === 0; }

      console.log(arrayCompare([1, 2, 3], [4, 5, 6])); // true console.log(arrayCompare([1, 2, 3], [1, 2, 4])); // false console.log(arrayCompare([1, 2, 3], [1, 3, 2])); // false ```

      在上述代码中,我们定义了一个名为arrayCompare的函数,它接受两个数组作为参数。然后,我们创建一个空数组c,用于存储循环引用的元素。在循环中,我们首先检查两个数组的最后一个元素是否相等。如果相等,我们从数组中弹出这两个元素,然后将它们添加到c数组中。如果第一个元素小于第二个元素,我们从数组中弹出第一个元素。如果第一个元素大于第二个元素,我们从数组中弹出第二个元素。最后,我们检查c数组的长度是否为0,如果为0,说明两个数组的循环引用已经消失,函数返回true。否则,函数返回false

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部