2014-11-04 139 views
1

的陣列時掃描所有/特定數組值以下是示例代碼:濾波陣列

var myArray = [["one", "two"], ["three", "four"]] 

var filteredArray = myArray.filter{ value in value[1] != "four"} 

filteredArray //[["one", "two"]] 

此代碼應該過濾掉包含「四」任何陣列。它正確地做到了,但僅僅是因爲我將值定位到特定的數組[1],因爲我知道它包含「四個」。 我應該如何重新格式化這段代碼,所以我不需要指定特定的數組,所以它會掃描那裏的所有值?當使用「for循環」時,我們可以使用一個聲明的「i」變量。但是如何用.filter函數做類似?另外,更具體地說,我如何重新設置這段代碼的格式,以便過濾數組並排除所有具有「四個」但具體爲第二個值(index [1])的數組,而不是如果它們具有「四個」任何其他指數的位置,如以前的要求。再次在沒有「我」變量的情況下,我不知道該怎麼做。感謝您的幫助。

回答

1

知道,過濾器回調在每次迭代接收內部陣列,我們可以使用reduce該陣列上以檢查是否它包含four字符串:,

var filteredArray = myArray.filter { 
    let count = $0.reduce(0) { 
     $0 + ($1 == "four" ? 1 : 0) 
    } 

    return count == 0 
} 

reduce閉合如果一個或多個元件是four,返回值將是一個大於零的整數。

+0

智能幫我搞定了tsk – 2014-11-04 16:19:59