2017-01-14 148 views
-1

我想這樣將s1和s1合併在一起,只有在一個名爲sortedString的新字符串中排序的唯一字符。相反,我得到一個空的字符串輸出。這是爲什麼返回一個空字符串?

前輸入和輸出:

sortedString.concat(b[j]); 

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

'I <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字符串類型是不可改變的,concat方法,當你鍵入不發生變異的輸入等等。你應該讓這個代替:

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

+0

噢,我認爲這是我正在尋找的。非常感謝! – Alex

+0

:)在技術上,'不可變'的相反是'改變',但我有點喜歡你的用法。 – sweaver2112

+0

是的,這是真的;) –

0

你需要一個空字符串傳遞給split,如果你想將字符串分隔成字符的列表。

不過,我會強烈建議您聲明解決這個問題:

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

隨着ES6,你可以使用Setspread syntax ...用於拆分字符串,並用於填充的數組。

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

 
console.log(result);

相關問題