Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何比较两个字符串数组,不区分大小写且独立于排序-JS,ES6_Javascript_Arrays_Ecmascript 6 - Fatal编程技术网

Javascript 如何比较两个字符串数组,不区分大小写且独立于排序-JS,ES6

Javascript 如何比较两个字符串数组,不区分大小写且独立于排序-JS,ES6,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我想比较两个字符串数组,但不区分大小写且独立 例如: ['a', 'b', 'c'] === ['A', 'c', 'B'] -> TRUE ['a', 'b', 'c'] === ['a', 'b', 'd'] -> FALSE TRUE当它们具有相同的长度和相同的值(不区分大小写['A']==['A']->TRUE)和独立时,关于排序['A',b']===['b',A']->TRUE 我现在所做的是: areEqual = (arr1, arr2) => { c

我想比较两个字符串数组,但不区分大小写且独立

例如:

['a', 'b', 'c'] === ['A', 'c', 'B'] -> TRUE

['a', 'b', 'c'] === ['a', 'b', 'd'] -> FALSE
TRUE
当它们具有相同的长度和相同的值(不区分大小写
['A']==['A']->TRUE
)和独立时,关于排序
['A',b']===['b',A']->TRUE

我现在所做的是:

areEqual = (arr1, arr2) => {
    const equalLength = arr1.length === arr2.length;

    return arr2.every(arr2Item => {

        return arr1.includes(arr2Item.toLowerCase());

    }) && equalLength;
};
,但这是区分大小写的


我正在使用
JS,ES6
React

您可以将字符串标准化为小写,并使用
集合
检查值。
功能比较(a、b){
const lower=s=>s.toLowerCase();
返回b
.地图(下)
.every(Set.prototype.has,新的Set(a.map(下));
}
log(比较(['a','b','c'],['a','c','b']);//真的
log(比较(['a','b','c'],['a','b','d']);//假的

log(比较(['a','b','c'],['a','c']);//true
您需要将
arr1
替换为它的小写副本。如果它们的长度不相同,您也应该立即返回,而不是在不必要时进行所有比较工作

areEqualCI = (arr1, arr2) => {
    if (arr1.length != arr2.length) {
        return false;
    }
    const arr1Lower = arr1.map(e => e.toLowerCase());
    return arr2.every(arr2Item => {
        return arr1Lower.includes(arr2Item.toLowerCase());
    });
};
对这两个数组进行排序,然后对它们进行元素比较可能更好:

areEqualCI = (arr1, arr2) => {
    if (arr1.length != arr2.length) {
        return false;
    }
    const arr1Lower = arr1.map(e => e.toLowerCase()).sort();
    const arr2Lower = arr2.map(e => e.toLowerCase()).sort();
    for (let i = 0; i < arr1.length; i++) {
        if (arr1[i] != arr2[i]) {
            return false;
        }
    }
    return true;
}
arequalci=(arr1,arr2)=>{
如果(arr1.length!=arr2.length){
返回false;
}
const arr1Lower=arr1.map(e=>e.toLowerCase()).sort();
const arr2Lower=arr2.map(e=>e.toLowerCase()).sort();
for(设i=0;i
这是否正确<代码>['a','b','c']==['a','c']->真的如果
等长
为假,那么
['a','b','c']====['a','c']->真的
怎么可能是真的?你对
['a','a','b']
['b','a']
有什么期望?他们应该平等吗?它们具有相同的长度和相同的值集,但每个值具有不同的多重性。如果你说它们是相等的,那么
['a','a','a','b']
不应该也等于它们吗?你的第三个例子仍然对不同长度的数组说是真的。这很好。缺少对相同长度的检查。OP与他自己的条件相矛盾though@KenoClayton-非常正确,我明白你的意思。OP的第三个示例说它们匹配(即使
a
b
长),但OP的代码执行长度相等检查。@MarkMeyer,OP说,唯一值,后面不,后面更唯一。嗯,我不知道。此解决方案假定值是唯一的。