Tan*_*may 2 javascript string comparison
嗨,我需要比较两个字符串,但没有看到安排
就像string1一样
var a="apple#1;banana#2;orange#3"
Run Code Online (Sandbox Code Playgroud)
和String2是
var b="banana#2;orange#3;apple#1"
Run Code Online (Sandbox Code Playgroud)
a.compare(b)应该给出true,因为值相同,只是排列不同
if(!a.compare(b)){
alert("not matched");
}
else{
alert("matched");
}
Run Code Online (Sandbox Code Playgroud)
我做了一个,但它太冗长的代码我在这里分享它:
function ReturnCollection (str){
var arr=str.split(';');
var returnarr=[];
for(var i=0;i<arr.length;i++){
var indx=arr[i].indexOf('#');
var text=arr[i].substr(0,indx);
var val=arr[i].substr(indx+1);
returnarr.push([text,val]);
}
return returnarr;
}
function Matching(){
var afinal=ReturnCollection(a);
var bfinal=ReturnCollection(b);
bflag=false;
outerloop:
for(i=0;i<afinal.length;i++){
for(j=0;j<bfinal.length;j++){
if(bfinal[j][1] === afinal[i][1]){
continue outerloop;
}
}
bflag=true;
break outerloop;
}
if(bflag){
alert("not matched");
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个应该做的伎俩:
string.split('').sort().join('')
Run Code Online (Sandbox Code Playgroud)
这可以通过将字符串转换为数组,对数组进行排序然后折叠回字符串(按字符排序)来实现.您可以在两个字符串上运行它并进行比较
console.log(a.split('').sort().join('') == b.split('').sort().join('')) // true
Run Code Online (Sandbox Code Playgroud)
你可以使用ES6和字符串强制来使它更简洁:
[...a].sort()+'' === [...b].sort()+''
Run Code Online (Sandbox Code Playgroud)