Объединить две (или более) строки и привести к одной и той же строке независимо от порядка - PullRequest
1 голос
/ 29 сентября 2019

Я хочу объединить некоторые строки в одну строку.(например: «Pen» и «Apple» -> «PenApple») Но я хочу, чтобы строка вывода была одинаковой независимо от порядка их объединения.

Каждая строка содержит символы, отличные от Unicode.

Если при реализации newConcat("Pen", "Apple") выводится "PenApple", то newConcat("Pen", "Apple") === newConcat("", "PenApple")

, а также newConcat("Pen", "Apple") === newConcat("", "ApplePen"), тогда newConcat("Pen", "Apple") должно выводить "ApplePen"

InВ общем, эти тестовые примеры также должны быть верными:


newConcat("Pen", "Apple") === newConcat("Apple", "Pen"); // true
newConcat("Pen", "Apple") === newConcat("_P3n", "_App13"); // false

newConcat("Pen", "Pineapple", "Apple", "Pen") === newConcat("Apple", "Pen", "Pen", "Pineapple"); // true

До сих пор я придумал, чтобы поместить строки в массив, отсортировать его, а затем вернуть объединенные в виде строки.

function newConcat( ...strings ) {
    const newArray = []
    newArray.push(...strings)
    return newArray.sort().join("") 
}

Я хочу знать, есть ли лучший способ сделать это, чем сортировать строки внутри массива.Что делать, если я хочу контролировать, в каком порядке они должны быть собраны.

1 Ответ

0 голосов
/ 29 сентября 2019

Я бы передал результаты в виде массива и упорядочил их, прежде чем возвращать вот так.

Надеюсь, это поможет!100

    function newConcat(array) {
    array.sort();
    var concat = "";
    for (var i=0; i<array.length;i++){
       concat = concat +array[i]
       }

    return concat
    }

    console.log(newConcat(["Pen","Apple"]));
    console.log(newConcat(["Pen","Apple"])===newConcat(["Pen","Apple"]));
    console.log(newConcat(["Pen","Apple"])===newConcat(["_P3n","_App13"]));

    console.log(newConcat(["Pen", "Pineapple", "Apple", "Pen"])===newConcat(["Apple", "Pen", "Pen", "Pineapple"]));
...