如何比较javascript忽略字符排列中的两个字符串

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)

Rob*_* M. 5

这是一个应该做的伎俩:

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)