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说,唯一值,后面不,后面更唯一。嗯,我不知道。此解决方案假定值是唯一的。