2017-01-14 26 views
-1

私はs1とs1を組み合わせて返すことを望みます。一意の文字だけがsortedStringという新しい文字列でソートされます。代わりに、私は空の文字列出力を取得します。なぜこれが空の文字列を返しますか?

元の入力および出力:あなたが入力したときに文字列型は不変と連結する方法である

a = "xyaabbbccccdefww" 
b = "xxxxyyyyabklmopq" 
longest(a, b) -> "abcdefklmopqwxy" 

function longest(s1, s2) { 
    var sortedString = ''; 
    var a = s1.split(); 
    var b = s2.split(); 
    for (i=0; i < a.length; i++) { 
    if (!sortedString.includes(a[i])) { 
     sortedString.concat(a[i]); 
     } 
    } 
    for (j=0; j < b.length; j++) { 
    if (!sortedString.includes(b[j])) { 
     sortedString.concat(b[j]); 
     } 
    } 
    return sortedString.sort(); 
} 
+2

'私は10,000' < - これは正確に何をすべきかを想定していますか?コンマはJavaScriptで意味があります:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator – UnholySheep

+1

さらに、jsの文字列には 'sort'メソッドがありません – mic4ael

+0

O nice catch私はコンマを削除しましたが、同じ問題がありました。 – Alex

答えて

0

JavaScriptでその入力を変化させません。

sortedString.concat(b[j]); 

sortedStringがミュートになることはありません。あなたは代わりに、これを行う必要があります

sortedString = sortedString.concat(b[j]);

+0

私はこれが私が探していたものだと思います。どうもありがとうございます! – Alex

+0

:)技術的には、「不変」の反対は「変更」されていますが、あなたの使い方に似ています。 – sweaver2112

+0

はい、それは本当です;) –

0

あなたは文字のリストに文字列を分離したい場合はsplitに空の文字列を渡す必要があります。

しかし、私は強くあなたが宣言この問題を解決推薦する:ES6で

const allChars = s1.split('').concat(s2.split('')); 
return allChars 
    .filter((char) => allChars.indexOf(char) === allChars.lastIndexOf(char)) 
    .sort() 
    .join(''); 
0

var a = "xyaabbbccccdefww"; 
 
var b = "xxxxyyyyabklmopq"; 
 
var mySet = new Set(a.split("").concat(b.split(""))); 
 
var result = Array.from(mySet).sort().join(""); 
 
console.log(result);

0

を、あなたは文字列を分割するため、配列を移入するためのspread syntax ...Setを使用することができます。

var a = "xyaabbbccccdefww", 
 
    b = "xxxxyyyyabklmopq", 
 
    result = [...new Set([...(a + b)])].sort().join(""); 
 

 
console.log(result);

関連する問題