为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

qq_花开花谢_0 2018-09-03 17:09:55
我现在要对一个二维数组进行操作,如题,如果不存在就进行push操作,所以不是对已经存在的数组去重试过indexOf,返回-1,es6的includes,返回false,有什么原生的方法可以判断出来么,并且能解释一下为什么直接的includes不行么
查看完整描述

1 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

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

[[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)


查看完整回答
反对 回复 2018-10-16
  • 1 回答
  • 0 关注
  • 1379 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信