javascript - [[1,2,3],[1,2,3]].includes([1,2,3])返回false

查看:315
本文介绍了javascript - [[1,2,3],[1,2,3]].includes([1,2,3])返回false的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我现在要对一个二维数组进行操作,如题,如果不存在就进行push操作,所以不是对已经存在的数组去重
试过indexOf,返回-1,es6的includes,返回false,
有什么原生的方法可以判断出来么,并且能解释一下为什么直接的includes不行么

解决方案

数组是引用类型,所以 [1,2,3]===[1,2,3]false. 因此 indexOfincludes 自然判断不出来。
如果你数组内部是值类型的话可以

[[1, 2, 3], [1, 2, 3]].filter(function (arr) {
    return JSON.stringify(arr) === JSON.stringify([1, 2, 3]);
}).length;

如果这个值大于 0 说明包含这个待比较的数组。

Another update:

[[1, 2, 3], [1, 2, 3]].some(function (arr) {
    return JSON.stringify(arr) === JSON.stringify([1, 2, 3]);
});

这次返回 true 就说明包含待比较的数组。(灵感来自本题的另一个 answer)

这篇关于javascript - [[1,2,3],[1,2,3]].includes([1,2,3])返回false的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆