-4

2017-12-26 21 views
0

스위프트 내가 형 [Any]의 2 배열이 - 사전의 객체를
그리고 다른 배열은 객체의 다른 세트를 포함 [Any] (있다가 첫 번째 배열에 포함되어 2 차 배열 객체)-4

I 두 번째 배열 요소의 첫 번째 배열의 인덱스를 찾을 필요가

예 : -

let firstArray = [["key1":6],["key2":8],["key3":64],["key4":68],["key5":26],["key6":76]] 

let secondArray = [["key3":64],["key6":68]] 

가 어떻게의 firstArray 인덱스를 찾을 수 있습니다개 요소

+0

전체 배열 두 번째 배열을 첫 번째 배열의 하위 배열로 찾고 싶습니까? 귀하의 질문은 명확하지 않습니다. –

+0

@DuncanC : 정확하게. 두 번째 배열 요소는 첫 번째 배열 요소에 포함됩니다. –

답변

3
let index = firstArray.index{$0 == secondArray[0]}; 
print("this value ", index); 

당신은 당신의 secondArray에서 을, 선택 (2), 그것은 기본적으로 2

+2

메소드의'Array.index (where :)'를 사용하는 것이 더 낫다. 트레일 링 클로저 구문을 사용하면 독자가 자신이하는 일을 알기가 어렵습니다. –

1

우선입니다 인쇄됩니다. 그런 다음 firstArray색인 키를 찾으십시오. 키가 존재하지 않으면 일부 값이 nil 일 수 있습니다.

let firstArray = [["key1":6],["key2":8],["key3":64],["key4":68],["key5":26],["key6":76]] 
let secondArray = [["key3":64],["key6":68], ["key8": 100]] 

let indexes = secondArray 
    .map({ $0.first?.key }) //map the values to the keys 
    .map({ secondKey -> Int? in 
     return firstArray.index(where: 
      { $0.first?.key == secondKey } //compare the key from your secondArray to the ones in firstArray 
     ) 
    }) 

print(indexes) //[Optional(2), Optional(5), nil] 

또한 결과가 nil 인 예제를 추가했습니다.