在javascript中,有函数Array.prototype.includes(),当我们想在数组中找到一些值时,它很有用。当我们搜索字符串、对象或数字值时,它工作得很好。但是,当我们试图在数组中找到一个数组时,它似乎不起作用。
let internalArray = ["a","b"]
let arrayOfArrays = [internalArray]
let result = arrayOfArrays.includes(["a","b"]);但这是可行的:D
let internalArray = ["a","b"]
let arrayOfArrays = [internalArray]
let result = arrayOfArrays.includes(internalArray);所以,当我们使用include函数时,javascript是比较数组引用,而不是比较值,对吗?
下一个问题是--如何以另一种方式在数组中找到数组--如何比较内部值?
发布于 2019-09-24 22:06:45
发布于 2019-09-24 22:17:35
假设主数组为a:[ 1,2 ,4,5,6],而要搜索的数组为b: 1,2
然后你就可以:
a.some(function(d){
return d instanceof Array && this.every((el)=>~d.indexOf(el))
},b)我将b作为"thisArg“传递,并只检查数组中的元素。如果您有更严格的要求,您可以尝试以下一个:
a.some(function(d){
if(!(d instanceof Array)){return}
let copy = this.slice(),_d = d.slice(),_i;
this.forEach((el)=>~(_i = _d.indexOf(el)) && _d.splice(_i,1) && copy.splice(copy.indexOf(el),1));
return !copy.length;
},b)https://stackoverflow.com/questions/58088586
复制相似问题