2017-09-14 146 views
0

繼承人我試圖教我自己。我想要一雙在嵌套indexArray元件的指向numberArray內部元件:非嵌套數組嵌套數組Swift

IOW:IF indexArray具有[[0,2],[3,4]]我想要的嵌套元素在numberArray

朝向元件 #0numberArray #2和元件3和4點
func findNumIndex(numberArray: [Int], indexArray: [[Int]]) -> Int { 
     // Use the NESTED index elements to arrive at element index in numberArrray 
    } 

    findNumIndex(nums: [0,1,2,3,4,5,6,7,8,9], queries: [[0,1],[1,2],[3,4]]) 

    // We would look at index 0 and 1, index 1 and 2, index 3 and 4 and get the numbers/ 

起初我想平坦化數組,但這不是我想要的。

回答

2

這似乎是東西,你可以用一個簡單的map做:

indexArray.map { $0.map { numberArray[$0] } } 
+0

Annnnnd我仍然在賺錢......哈哈! –

+1

沒有錯。我的建議:閱讀'map','flatMap','reduce'和'filter'方法。它們在很多情況下非常有用! –

0

超過設計了一下,不過這件事是在很多情況下,一個非常方便的擴展:

extension RandomAccessCollection where Self.Index == Int { 
    subscript<S: Sequence>(indices indices: S) -> [Self.Element] 
     where S.Iterator.Element == Int { 
     return indices.map{ self[$0] } 
    } 
} 

let input = ["a", "b", "c", "d", "e"] 
let queries = [[0, 1], [1, 2], [3, 4]] 
let result = queries.map{ input[indices: $0] } 

print(result) // => [["a", "b"], ["b", "c"], ["d", "e"]] 
+0

這很酷!謝謝大家!我有一些好東西可以咀嚼。 –