2017-10-18 84 views
0

我有一個數組,如:尋求在陣列中的一個值,並返回第二個

[ 
    ["Reichertshofen", "ssh -p 10001 [email protected] -L 13389:192.168.23.14:3389 -f sleep 50"], 
    ["Zentralbuero", "ssh -p 10001 [email protected] -L 13389:192.168.38.14:3389 -f sleep 50"] 
] 

我想尋求像「賴歇爾茨霍芬」的第一個值,並獲得返回第二個字符串。

我該怎麼做?

+0

任何理由次數據是不是在一個字典? – XmasRights

+0

我從一個json文件中解脫出來,它就這樣結束了:-) – tpensel

回答

0

這實際上是一本字典,所以我的傾向是將數據表示爲一個。

let array = [ 
    ["Reichertshofen", "ssh -p 10001 [email protected] -L 13389:192.168.23.14:3389 -f sleep 50"], 
    ["Zentralbuero", "ssh -p 10001 [email protected] -L 13389:192.168.38.14:3389 -f sleep 50"] 
] 

斯威夫特4

let sequence = array.flatMap 
{ entry -> (String, String)? in 
    guard entry.count == 2 else { return nil } 
    return (entry[0], entry[1]) 
} 
let dictionary = Dictionary(uniqueKeysWithValues: sequence) 

斯威夫特3

let dictionary = array.reduce([String:String]()) 
{ (dict, entry) in 
    guard entry.count == 2 else { return dict } 
    var dict = dict 
    dict[entry[0]] = entry[1] 
    return dict 
} 

形式存在,它只是:

if let result = dictionary["Reichertshofen"] 
{ 
    print(result) 
} 
-1
// 1 
for array in arrays { 
    // 2 
    if let index = array.index(of: "abc"), 
     // 3 
     (index + 1) < array.count { 

     // 4 
     return array[index + 1] 
    } 
} 
  1. 枚舉通過數組的數組
  2. 所需元件
  3. 檢查的
  4. 查找索引如果存在索引之後下一個元素
  5. 返回期望值
+0

爲什麼所有這些工作?數組讓你可以直接訪問任何元素 - 你不必遍歷整個事物。 – Caleb

+0

「尋求」意味着你需要找到元素。有問題的陣列只是一個例子,可能是動態的。我的解決方案適用於任何數量的訂單或大小。 –

+0

var lstServers = [[String]]()是我存儲我的數據的變量,但我沒有得到從哪裏得到「數組」的地方...... – tpensel

0

我會喜歡尋找像「Reichertshofen」這樣的第一個值,並得到第二個字符串。

你有什麼是一個數組的數組。

[ 
    ["Reichertshofen", "ssh -p 10001 [email protected] -L 13389:192.168.23.14:3389 -f sleep 50"], 
    ["Zentralbuero", "ssh -p 10001 [email protected] -L 13389:192.168.38.14:3389 -f sleep 50"] 
] 

那麼,你問的是第一子陣列的第二個元素:如果你添加了一些換行,它會更清晰。換句話說,如果您有:

let people : [[String]] = [["Reichertshofen", "ssh -p 10001 [email protected] -L 13389:192.168.23.14:3389 -f sleep 50"], ["Zentralbuero", "ssh -p 10001 [email protected] -L 13389:192.168.38.14:3389 -f sleep 50"]] 

,那麼你想要的元素是:

let element = people[0][1] 

請記住,數組是從0開始索引,所以在數組中的第一個元素的索引0 。

0

假設所有的數組包含(至少)2項,你想的第一個項目總是搜索使用

let data = [ 
    ["Reichertshofen", "ssh -p 10001 [email protected] -L 13389:192.168.23.14:3389 -f sleep 50"], 
    ["Zentralbuero", "ssh -p 10001 [email protected] -L 13389:192.168.38.14:3389 -f sleep 50"] 
] 

let search = "Reichertshofen" 
if let found = data.first(where: {$0[0] == search }) { 
    let script = found[1] 
    print(script) 
} 

但是,我強烈建議使用一個簡單的自定義結構而不是嵌套數組。名稱比索引更具描述性。

struct Connection { 
    let name, script : String 
} 

let data = [ 
    Connection(name: "Reichertshofen", script: "ssh -p 10001 [email protected] -L 13389:192.168.23.14:3389 -f sleep 50"), 
    Connection(name: "Zentralbuero", script: "ssh -p 10001 [email protected] -L 13389:192.168.38.14:3389 -f sleep 50") 
] 

let search = "Reichertshofen" 
if let found = data.first(where: {$0.name == search }) { 
    let script = found.script 
    print(script) 
} 
+0

那一個工作完美!謝謝!!! – tpensel

相關問題