Javascript 检查数组是否包含其他数组的某些元素将返回不正确的结果

Javascript 检查数组是否包含其他数组的某些元素将返回不正确的结果,javascript,arrays,Javascript,Arrays,下面的代码检查在某些情况下array1或array2是否包含连字符。如果有,这些连字符将被删除。然后比较两个数组,检查一个数组中的某些元素是否包含在另一个数组中: var array1 = ['banana-orange']; var array2 = ['banana', 'orange']; if (checkHyphen(array2) == true && checkHyphen(array1) == false) { for (let i = 0; i <

下面的代码检查在某些情况下array1或array2是否包含连字符。如果有,这些连字符将被删除。然后比较两个数组,检查一个数组中的某些元素是否包含在另一个数组中:

var array1 = ['banana-orange'];
var array2 = ['banana', 'orange'];

if (checkHyphen(array2) == true && checkHyphen(array1) == false) {
    for (let i = 0; i < array2.length; i++) {
        if (array2[i].includes('-')) {
            array2[i] = array2[i].replace('-', ' ').split(' ');
        }
    }
} else if (checkHyphen(array2) == false && checkHyphen(array1) == true) {
    for (let i = 0; i < array1.length; i++) {
        if (array1[i].includes('-')) {
            array1[i] = array1[i].replace('-', ' ').split(' ');
        }
    }
}

function checkHyphen(a) {
    var finished = false;

    for (let i = 0; i < a.length; i++) {
        if (a[i].includes('-')) {
            finished = true;
        }
    }

    return finished;
}

console.log('array2 = ' + array2); //should match array1 - it does
console.log('array1 = ' + array1); //should match array2 - it does
console.log(array2.some(v => array1.includes(v)) == true); // returns false, should be true
var array1=['banana-orange'];
var array2=[‘香蕉’、‘橙色’];
if(checkHyphen(array2)==true&&checkHyphen(array1)==false){
for(设i=0;ilog(array2.some(v=>array1.includes(v))==true)不要尝试检查连字符等,您应该只定义一个函数来处理各个输入数组,拆分任何连字符上的每个值,并将结果推送到新数组上

constinput1=['banana-orange','mango']
常量输入2=['香蕉'、'橘子'、'苹果葡萄']
常量输入3=['mango']
功能检查(输入1、输入2){
const process=input=>input.reduce((结果,值)=>(result.push(…value.split(+/-+/g)),result),[])
const processed=[input1,input2].map(输入=>process(输入))
返回已处理的[0]。部分(值=>已处理的[1]。包括(值))
}
控制台日志(检查(输入1,输入2))
控制台日志(检查(输入1,输入3))

log(check(input2,input3))
btw,不需要将一个布尔值与另一个布尔值进行比较,只需取一个
true
值或一个
false
值和一个逻辑not
array2[i]=array2[i].替换('-','').split('')创建嵌套阵列我得到的是阵列2.flat不是function@Sweepster是的,因为并非每个浏览器都提供
flat()
,这就是为什么in提到第二种方法
JSON.stringify(array2).split(‘,’)
不过我在使用chrome.JSON,我得到的是array2=[[“香蕉”,“橙色”]]而不是array2=[“香蕉”,“橙色”]@Sweepster抱歉,我犯了错误,用
String
代替了
JSON.stringify
我更新了