Swift, как использовать массив с индексами для переупорядочения другого массива - PullRequest
0 голосов
/ 27 декабря 2018

В Swift у меня есть массив индексов, которые я хочу использовать для перестановки массива значений (очень легко сделать в Matlab), но не могу найти простой способ сделать это (использование цикла forбудь проще, но я ищу более эффективный метод).

Например:

var indices = [1,0,2]
var values = ["A","B","C"]
var permute = values[indices]
// Hoping to print: permute = ["B","A","C"]

Ответы [ 4 ]

0 голосов
/ 28 декабря 2018

Альтернативное решение с использованием compactMap,

let indices = [1, 0, 2]
var values = ["A", "B", "C"]
let permute = indices.compactMap({ values[$0] })
print(permute)
0 голосов
/ 27 декабря 2018
var indices = [1,0,2]
var values = ["A","B","C"]
var permute = indices.map({values[$0]})
print(permute)
0 голосов
/ 27 декабря 2018
let indices = [1,0,2]
let values = ["A","B","C"]
var result: [String] = []

indices.forEach({ result.append(values[$0]) })
print(result) //["B", "A", "C"]
0 голосов
/ 27 декабря 2018

Вы можете просто сопоставить массив ключей с массивом значений.

var keys = [1,0,2]
var values = ["a","b","c"]
print(keys.map({values[$0]}))
...