Javascript 使用every()检查一个数组是否包含另一个数组的所有元素
我有一个数组,每次单击都会更改。每次单击时,我都需要确定数组是否包含一组数组上的任何序列。这是我正在与该阵列进行比较的给定阵列集:Javascript 使用every()检查一个数组是否包含另一个数组的所有元素,javascript,arrays,Javascript,Arrays,我有一个数组,每次单击都会更改。每次单击时,我都需要确定数组是否包含一组数组上的任何序列。这是我正在与该阵列进行比较的给定阵列集: const combos = [ [0, 5, 3], [0, 8, 2], [0, 0, 1], [1, 1, 2], ]; 这就是我试图比较它们的方式: const playerCombo = ( arr ) => { //First sort the Array const sor
const combos = [
[0, 5, 3],
[0, 8, 2],
[0, 0, 1],
[1, 1, 2],
];
这就是我试图比较它们的方式:
const playerCombo = ( arr ) => {
//First sort the Array
const sorted = arr.sort();
//Initialize the hasWon variable
let hasWon = '';
//For each combo Array...
for( let combo of boardCtrl.combos ){
if( sorted.length > 2 ) {
hasWon = combo.every((e)=> sorted.includes(e));
}
}
return hasWon;
}
但是结果不是很一致,只是有时有效。很难说你期望什么:
const boardCtrl={
组合键:[[0,5,3],[0,8,2],[0,0,1],[1,1,2]]
}
常量testArray=[[0,0,1]、[0,8,2]、[1,1,2]、[0,5,3];
常量shouldFail=[[0,0,1]、[0,8,2]、[1,7,2]、[0,5,3];
const playerCombo=数组=>{
const bc=boardCtrl.combos;
设l=bc.length,n=0;
如果(array.length!==l){
返回false;
}
for(让bc组合){
对于(数组的a){
如果(a.every(e=>combo.includes(e)))n++;
}
}
返回n==l;
}
控制台日志(playerCombo(testArray));
日志(playerCombo(shouldFail))代码>haswen
正在覆盖,因此循环结束。您可能只想if(sorted.length>2){if(!combo.every((e)=>sorted.includes(e)){return false;}}}返回true代码>请包含示例输入和输出。如果要比较每个成员是否包含在单独的数组中,那么对数组进行排序有什么意义?检查是否有零,而不是检查是否有两个零。因此,如果数组A是[0,0,5]
,它将通过[0,5,3]
传递,比较原语值数组很简单,但我关心排序。你很可能会把它编成字符串,比较一下,然后就到此为止。这只适用于组合不允许以随机顺序排列的情况,因此。。。是吗?