...

Source file src/go.formulabun.club/functional/array/functions.go

Documentation: go.formulabun.club/functional/array

     1  package array
     2  
     3  func Map[T any, P any](array []T, function func(T) P) []P {
     4  	result := make([]P, len(array))
     5  	for i, t := range array {
     6  		result[i] = function(t)
     7  	}
     8  	return result
     9  }
    10  
    11  func FindFirstIndex[T any](array []T, function func(T) bool) int {
    12  	for i, t := range array {
    13  		if function(t) {
    14  			return i
    15  		}
    16  	}
    17  	return -1
    18  }
    19  
    20  func FindFirstIndexMatching[T comparable](array []T, toSearch T) int {
    21    return FindFirstIndex(array, equals(toSearch))
    22  }
    23  
    24  func FindFirst[T any](array []T, function func(T) bool) *T {
    25    i := FindFirstIndex(array, function)
    26    if i >= 0 && i < len(array) {
    27      return &array[i]
    28    }
    29    return nil
    30  }
    31  
    32  func Any[T any](array []T, function func(T) bool) bool {
    33  	for _, t := range array {
    34  		if function(t) {
    35  			return true
    36  		}
    37  	}
    38  	return false
    39  }
    40  
    41  func All[T any](array []T, function func(T) bool) bool {
    42  	return !Any(array, inverse(function))
    43  }
    44  
    45  func Filter[T any](array []T, function func(T) bool) []T {
    46    var i = 0
    47  	result := make([]T, len(array))
    48    for _, t := range array {
    49      if function(t) {
    50        result[i] = t
    51        i++
    52      }
    53    }
    54    return result[:i]
    55  }
    56  

View as plain text