別の配列の並べ替え順序に基づいて複数の配列を並べ替えるにはどうすればよいですか?

ボグダンボグダノフ

複数の配列があり、次のように、そのうちの1つの並べ替え順序に基づいてすべてを並べ替えたいと思います。

var myArr = ["b", "a", "c"]
var myArr2 = ["letter b", "letter a", "letter c"]
var myArr3 = ["b is the second letter", "a is the first letter", "c is the third letter"]

func sortMultipleArraysBasedOnOne(alphabeticallyArray:Array, arrays:[Array]){
  //order myArr alphabetically
  for array in arrays{
    //change all arrays indexes like in myArr
  }
}

sortMultipleArraysBasedOnOne(myArr, [myArr2, myArr3])

関数の実行後、配列は次のようになると思います。

myArr = ["a", "b", "c"]
myArr2 = ["letter a", "letter b", "letter c"]
myArr3 = ["a is the first letter", "b is the second letter", "c is the third letter"]
対気速度速度

これを行うには、最初にキーイング配列のインデックスの配列をインデックス付けする値で並べ替え、次に次を使用して、並べ替えられたインデックスに基づいて新しい配列を生成しますPermutationGenerator

let myArr = ["b", "a", "c"]
let myArr2 = ["letter b", "letter a", "letter c"]
let myArr3 = ["b is the second letter", "a is the first letter", "c is the third letter"]

func sortByKeyArray(keyArray: [String], valuesArrays: [[String]]) -> [[String]] {

    precondition(reduce(valuesArrays, true) { $0.0 && ($0.1.count == keyArray.count)},
        "Arrays all need to be the same length")


    let permutation = sorted(indices(keyArray)) {
        keyArray[$0] < keyArray[$1]
    }

    return valuesArrays.map {
        Array(PermutationGenerator(elements: $0, indices: permutation))
    }
}

sortByKeyArray(myArr, [myArr2, myArr3])
// returns [["letter a", "letter b", "letter c"], ["a is the first letter", "b is the second letter", "c is the third letter"]]

あらゆる種類のコレクションでこれをジェネリックにしたい場合(ただし、std libコレクションアルゴリズムと同じスタイルで配列を返します):

func sortByKeyingCollection<C: CollectionType, D: SequenceType 
  where D.Generator.Element == C, 
        C.Index: RandomAccessIndexType, 
        C.Generator.Element: Comparable>
(key: C, values: D) -> [[C.Generator.Element]] {

    let permutation = sorted(indices(key)) {
        key[$0] < key[$1]
    }

    return map(values) {
        Array(PermutationGenerator(elements: $0, indices: permutation))
    }
}

そして、カスタムコンパレータを使用するバージョン:

func sortByKeyingCollection<C: CollectionType, D: SequenceType where D.Generator.Element == C, C.Index: RandomAccessIndexType>(key: C, values: D, isOrderedBefore: (C.Generator.Element,C.Generator.Element)->Bool) -> [[C.Generator.Element]] {

    let permutation = sorted(indices(key)) {
        isOrderedBefore(key[$0],key[$1])
    }

    return map(values) {
        Array(PermutationGenerator(elements: $0, indices: permutation))
    }
}


sortByKeyingCollection(myArr, [myArr2, myArr3], >)
sortByKeyingCollection(myArr, [myArr2, myArr3], lexicographicalCompare)
sortByKeyingCollection(myArr, [myArr2, myArr3]) { dropFirst($0) < dropFirst($1) }

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

別の配列に基づいて複数の配列を並べ替える並べ替え順序

分類Dev

別の配列の並べ替え順序に基づいて配列を並べ替える

分類Dev

辞書式順序で並べ替えられた配列に最初に別の配列を追加するにはどうすればよいですか?

分類Dev

配列の文字列要素の最初の文字に基づいてJavascriptで配列を並べ替えるにはどうすればよいですか?-javascript

分類Dev

1つの配列を並べ替えるときに2つの配列の順序を変更するにはどうすればよいですか?

分類Dev

オブジェクトの配列をキーで並べ替えてから、他のキーを並べ替えられた順序で新しい配列にプッシュするにはどうすればよいですか?

分類Dev

数値の別の列に基づいてテキストの列を並べ替えるにはどうすればよいですか?

分類Dev

postgresqlを使用して、文字列のカスタム並べ替え順序でクエリを並べ替えるにはどうすればよいですか?

分類Dev

配列の順序を使用してこのコレクションを並べ替えるにはどうすればよいですか?

分類Dev

別の配列の順序に基づいて配列の配列を並べ替える(Ruby)

分類Dev

別の配列の順序に基づいて配列の配列を並べ替える

分類Dev

Ruby 2D配列を複数の文字列を降順に並べ替えるにはどうすればよいですか?

分類Dev

値の出現回数で配列を並べ替えるにはどうすればよいですか?

分類Dev

子配列jsの合計で配列を並べ替えるにはどうすればよいですか?

分類Dev

文字列配列の順序に基づいてArrayListを並べ替える-Java

分類Dev

配列をアルファベット順に並べ替えてから、その順序を別の配列に与えるにはどうすればよいですか?

分類Dev

カスタムの並べ替え順序配列に基づいて JSON を並べ替える

分類Dev

2つのプロパティを使用してオブジェクトの配列を並べ替えるが、条件に応じて並べ替え順序で条件付きでグループ化するにはどうすればよいですか?

分類Dev

文字列の最初の文字で配列を並べ替えるにはどうすればよいですか?

分類Dev

複数の基準に基づいて配列を並べ替える方法は?

分類Dev

複数の基準に基づいて配列を並べ替える方法は?

分類Dev

平日の文字列の配列を並べ替えるにはどうすればよいですか?

分類Dev

JavaScript:順列の順序に基づいて配列を並べ替えますか?

分類Dev

javascriptの別の配列に基づいて配列を並べ替えます

分類Dev

並べ替えられた別のリストに基づいてXSLで並べ替えるにはどうすればよいですか?

分類Dev

ID配列に基づいて複数の配列を並べ替える

分類Dev

data.tableの行を任意の順序に基づいて並べ替えるにはどうすればよいですか?

分類Dev

この配列をこの値で並べ替えるにはどうすればよいですか?

分類Dev

構造体の配列をすばやく並べ替えるにはどうすればよいですか

Related 関連記事

  1. 1

    別の配列に基づいて複数の配列を並べ替える並べ替え順序

  2. 2

    別の配列の並べ替え順序に基づいて配列を並べ替える

  3. 3

    辞書式順序で並べ替えられた配列に最初に別の配列を追加するにはどうすればよいですか?

  4. 4

    配列の文字列要素の最初の文字に基づいてJavascriptで配列を並べ替えるにはどうすればよいですか?-javascript

  5. 5

    1つの配列を並べ替えるときに2つの配列の順序を変更するにはどうすればよいですか?

  6. 6

    オブジェクトの配列をキーで並べ替えてから、他のキーを並べ替えられた順序で新しい配列にプッシュするにはどうすればよいですか?

  7. 7

    数値の別の列に基づいてテキストの列を並べ替えるにはどうすればよいですか?

  8. 8

    postgresqlを使用して、文字列のカスタム並べ替え順序でクエリを並べ替えるにはどうすればよいですか?

  9. 9

    配列の順序を使用してこのコレクションを並べ替えるにはどうすればよいですか?

  10. 10

    別の配列の順序に基づいて配列の配列を並べ替える(Ruby)

  11. 11

    別の配列の順序に基づいて配列の配列を並べ替える

  12. 12

    Ruby 2D配列を複数の文字列を降順に並べ替えるにはどうすればよいですか?

  13. 13

    値の出現回数で配列を並べ替えるにはどうすればよいですか?

  14. 14

    子配列jsの合計で配列を並べ替えるにはどうすればよいですか?

  15. 15

    文字列配列の順序に基づいてArrayListを並べ替える-Java

  16. 16

    配列をアルファベット順に並べ替えてから、その順序を別の配列に与えるにはどうすればよいですか?

  17. 17

    カスタムの並べ替え順序配列に基づいて JSON を並べ替える

  18. 18

    2つのプロパティを使用してオブジェクトの配列を並べ替えるが、条件に応じて並べ替え順序で条件付きでグループ化するにはどうすればよいですか?

  19. 19

    文字列の最初の文字で配列を並べ替えるにはどうすればよいですか?

  20. 20

    複数の基準に基づいて配列を並べ替える方法は?

  21. 21

    複数の基準に基づいて配列を並べ替える方法は?

  22. 22

    平日の文字列の配列を並べ替えるにはどうすればよいですか?

  23. 23

    JavaScript:順列の順序に基づいて配列を並べ替えますか?

  24. 24

    javascriptの別の配列に基づいて配列を並べ替えます

  25. 25

    並べ替えられた別のリストに基づいてXSLで並べ替えるにはどうすればよいですか?

  26. 26

    ID配列に基づいて複数の配列を並べ替える

  27. 27

    data.tableの行を任意の順序に基づいて並べ替えるにはどうすればよいですか?

  28. 28

    この配列をこの値で並べ替えるにはどうすればよいですか?

  29. 29

    構造体の配列をすばやく並べ替えるにはどうすればよいですか

ホットタグ

アーカイブ