Internal
An array-like iterable
object to convert to a KoconutSet.
Accumulates value starting with initial
value and applying operation
from left to right to current accumulator value and each element.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const sumOfArray = await koconutArray
.fold(
0,
(acc, eachNumber) => acc + eachNumber
)
.yield()
console.log(sumOfArray)
// ↑ 15
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const multiplesOfSet = await koconutSet
.fold(
1,
async (acc, eachNumber) => acc * eachNumber
)
.yield()
console.log(multiplesOfSet)
// ↑ 120
A value to use as the first argument to the first call of the operation
.
A callback function that accepts one argument. The operation
accumulates callback's return value. It's accumulated value
previously returned in the last invocation of the callback or initial
value. The method calls the operation
one time for each element in object.
An object to which the this
keyword can refer in the operation
. If thisArg
is omitted, null
is used as the this
value.
Accumulates value starting with initial
value and applying operation
from left to right to current accumulator value and each element.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const sumOfNumberAndIndexInArray = await koconutArray
.foldIndexed(
0,
(index, acc, eachNumber) => index + acc + eachNumber
)
.yield()
console.log(sumOfNumberAndIndexInArray)
// ↑ 25
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const multiplesOfNumberAndIndexInSet = await koconutSet
.foldIndexed(
1,
async (index, acc, eachNumber) => index * acc * eachNumber
)
.yield()
console.log(multiplesOfNumberAndIndexInSet)
// ↑ 0
A value to use as the first argument to the first call of the operation
.
A callback function that accepts one argument. The operation
accumulates callback's return value. It's accumulated value
previously returned in the last invocation of the callback or initial
value. The method calls the operation
one time for each element and index in object.
An object to which the this
keyword can refer in the operation
. If thisArg
is omitted, null
is used as the this
value.
Returns the number of the elements matching the given predicate
. If the predicate
is ommitted it'll returns the whole number of elements.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const numberOfAllArrayElements = await koconutArray
.count()
.yield()
console.log(numberOfAllArrayElements)
// ↑ 5
const numberOfArrayElementsHigherThan2 = await koconutArray
.count(eachNumber => eachNumber > 2)
.yield()
console.log(numberOfArrayElementsHigherThan2)
// ↑ 3 -- i.e. [3, 4, 5]
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const numberOfAllSetElements = await koconutSet
.count()
.yield()
console.log(numberOfAllSetElements)
// ↑ 5
const numberOfOddSetElements = await koconutSet
.count(eachNumber => eachNumber % 2 == 1)
.yield()
console.log(numberOfOddSetElements)
// ↑ 3 -- i.e. [1, 3, 5]
// Case 3 -- KoconutMap
const koconutMap = KoconutArray.of(1,2,3)
.associateWith(eachNumber => eachNumber * 2)
// ↑ Map { 1 => 2,
// 2 => 4,
// 3 => 6 }
const numberOfAllMapEntries = await koconutMap
.count()
.yield()
console.log(numberOfAllMapEntries)
// ↑ 3
const numberOfMapEntriesValueHigherThan5 = await koconutMap
.count(eachEntry => eachEntry.value > 5)
.yield()
console.log(numberOfMapEntriesValueHigherThan5)
// ↑ 1 -- i.e. Entry { 3, 6 }
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(1,2,3,4,5)
const numberOfArrayElementsLessThan3 = await koconutArray2
.count(async eachNumber => eachNumber < 3)
.yield()
console.log(numberOfArrayElementsLessThan3)
// ↑ 2 -- i.e. [1, 2]
const numberOfEvenArrayElements = await koconutArray2
.count(eachNumber => new Promise(resolve => {
resolve(eachNumber % 2 == 0)
}))
.yield()
console.log(numberOfEvenArrayElements)
// ↑ 2 -- i.e. [2, 4]
A callback function that accepts an argument. The method calls the predicate
one time for each element in object.
An object to which the this
keyword can refer in the predicate
. If thisArg
is omitted, null
is used as the this
value.
Returns the first element yielding the largest value of the given function or throws KoconutNoSuchElementException if there are no elements.
1.0.10
Use maxByOrNull instead.
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const largestNumberOfArray = await koconutArray
.maxBy(eachNumber => eachNumber)
.yield()
console.log(largestNumberOfArray)
// ↑ 5
try {
await koconutArray
.filter(eachNumber => eachNumber > 10)
.maxBy(eachNumber => eachNumber)
.yield()
} catch(error) {
console.log(error.name)
// ↑ Koconut No Such Element Exception
// i.e. -- Array is filtered.
// No element in 1 to 5 is greater than 10.
}
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of("a", "ab", "abc")
const longestStringOfSet = await koconutSet
.maxBy(eachString => eachString.length)
.yield()
console.log(longestStringOfSet)
// ↑ abc
// Case 3 -- KoconutMap
const koconutMap = KoconutArray.of(1, 12, 123)
.associateWith(eachNumber => eachNumber.toString())
const longestDigitsEntryOfMap = await koconutMap
.maxBy(eachEntry => eachEntry.value.length)
.yield()
console.log(longestDigitsEntryOfMap)
// ↑ Entry { keyElement: 123, valueElement: '123' }
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(19,27,32)
const largestNumberOfArray2 = await koconutArray2
.maxBy(async eachNumber => eachNumber)
.yield()
console.log(largestNumberOfArray2)
// ↑ 32
const largest1sDigitNumberOfArray2 = await koconutArray2
.maxBy(eachNumber => new Promise(resolve => {
resolve(eachNumber % 10)
}))
.yield()
console.log(largest1sDigitNumberOfArray2)
// ↑ 19
A callback function that accepts an argument. The method calls the selector
one time for each element in object.
An object to which the this
keyword can refer in the selector
. If thisArg
is omitted, null
is used as the this
value.
Returns the first element yielding the largest value of the given function or null if there are no elements.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const largestNumberOfArray = await koconutArray
.maxByOrNull(eachNumber => eachNumber)
.yield()
console.log(largestNumberOfArray)
// ↑ 5
const largestNumberOfEmptyArray = await koconutArray
.filter(eachNumber => eachNumber > 10)
.maxByOrNull(eachNumber => eachNumber)
.yield()
console.log(largestNumberOfEmptyArray)
// ↑ null
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of("a", "ab", "abc")
const longestStringOfSet = await koconutSet
.maxByOrNull(eachString => eachString.length)
.yield()
console.log(longestStringOfSet)
// ↑ abc
// Case 3 -- KoconutMap
const koconutMap = KoconutArray.of(1, 12, 123)
.associateWith(eachNumber => eachNumber.toString())
const longestDigitsEntryOfMap = await koconutMap
.maxByOrNull(eachEntry => eachEntry.value.length)
.yield()
console.log(longestDigitsEntryOfMap)
// ↑ Entry { keyElement: 123, valueElement: '123' }
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(19,27,32)
const largestNumberOfArray2 = await koconutArray2
.maxByOrNull(async eachNumber => eachNumber)
.yield()
console.log(largestNumberOfArray2)
// ↑ 32
const largest1sDigitNumberOfArray2 = await koconutArray2
.maxByOrNull(eachNumber => new Promise(resolve => {
resolve(eachNumber % 10)
}))
.yield()
console.log(largest1sDigitNumberOfArray2)
// ↑ 19
A callback function that accepts an argument. The method calls the selector
one time for each element in object.
An object to which the this
keyword can refer in the selector
. If thisArg
is omitted, null
is used as the this
value.
Returns the largest value among all values produced by selector
function applied to each element in the collection or
throws KoconutNoSuchElementException if there are no elements.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,7,9)
const largestRemainderNumberDividedBy5OfArray = await koconutArray
.maxOf(eachNumber => eachNumber % 5)
.yield()
console.log(largestRemainderNumberDividedBy5OfArray)
// ↑ 4
try {
await koconutArray
.filter(eachNumber => eachNumber > 10)
.maxOf(eachNumber => eachNumber % 5)
.yield()
} catch(error) {
console.log(error.name)
// ↑ Koconut No Such Element Exception
// i.e. -- Array is filtered.
// No element in 1 to 5 is greater than 10.
}
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of("a", "ab", "abc")
const longestStringLengthOfSet = await koconutSet
.maxOf(eachString => eachString.length)
.yield()
console.log(longestStringLengthOfSet)
// ↑ 3
class ComparableString implements KoconutComparable{
str : string
constructor(str : string) {
this.str = str
}
// Override
compareTo(other : ComparableString) : number {
return this.str.length - other.str.length
}
}
const maxComparableString = await koconutSet
.maxOf(eachString => new ComparableString(eachString))
.yield()
console.log(maxComparableString)
// ↑ ComparableString { str: 'abc' }
// Case 3 -- KoconutMap
const koconutMap = KoconutArray.of("a", "ab", "abc")
.associate(eachString => [eachString.length, eachString])
const longestStringLengthOfMap = await koconutMap
.maxOf(eachEntry => eachEntry.key)
.yield()
console.log(longestStringLengthOfMap)
// ↑ 3
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(12,51,32,45,50)
const largestNumberOfArray2 = await koconutArray2
.maxOf(async eachNumber => eachNumber)
.yield()
console.log(largestNumberOfArray2)
// ↑ 51
const largest1sDigitOfArray2 = await koconutArray2
.maxOf(eachNumber => new Promise(resolve => {
resolve(eachNumber % 10)
}))
.yield()
console.log(largest1sDigitOfArray2)
// ↑ 5
A callback function that accepts an argument. The method calls the selector
one time for each element in object.
An object to which the this
keyword can refer in the selector
. If thisArg
is omitted, null
is used as the this
value.
Returns the largest value among all values produced by selector
function applied to each element in the collection or
null if there are no elements.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,7,9)
const largestRemainderNumberDividedBy5OfArray = await koconutArray
.maxOfOrNull(eachNumber => eachNumber % 5)
.yield()
console.log(largestRemainderNumberDividedBy5OfArray)
// ↑ 4
const largestRemainderNumberDividedBy5OfEmptyArray = await koconutArray
.filter(eachNumber => eachNumber > 10)
.maxOfOrNull(eachNumber => eachNumber % 5)
.yield()
console.log(largestRemainderNumberDividedBy5OfEmptyArray)
// ↑ null
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of("a", "ab", "abc")
const longestStringLengthOfSet = await koconutSet
.maxOfOrNull(eachString => eachString.length)
.yield()
console.log(longestStringLengthOfSet)
// ↑ 3
class ComparableString implements KoconutComparable{
str : string
constructor(str : string) {
this.str = str
}
// Override
compareTo(other : ComparableString) : number {
return this.str.length - other.str.length
}
}
const maxComparableString = await koconutSet
.maxOfOrNull(eachString => new ComparableString(eachString))
.yield()
console.log(maxComparableString)
// ↑ ComparableString { str: 'abc' }
// Case 3 -- KoconutMap
const koconutMap = KoconutArray.of("a", "ab", "abc")
.associate(eachString => [eachString.length, eachString])
const longestStringLengthOfMap = await koconutMap
.maxOfOrNull(eachEntry => eachEntry.key)
.yield()
console.log(longestStringLengthOfMap)
// ↑ 3
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(12,51,32,45,50)
const largestNumberOfArray2 = await koconutArray2
.maxOfOrNull(async eachNumber => eachNumber)
.yield()
console.log(largestNumberOfArray2)
// ↑ 51
const largest1sDigitOfArray2 = await koconutArray2
.maxOfOrNull(eachNumber => new Promise(resolve => {
resolve(eachNumber % 10)
}))
.yield()
console.log(largest1sDigitOfArray2)
// ↑ 5
A callback function that accepts an argument. The method calls the selector
one time for each element in object.
An object to which the this
keyword can refer in the selector
. If thisArg
is omitted, null
is used as the this
value.
Returns the largest value according to the provided comparator
among all values
produced by selector
function applied to each element in the collection all throws KoconutNoSuchElementException
if elements are empty.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of("1", "2", "3", "4", "5")
const largestNumberedStringOfArray = await koconutArray
.maxOfWith(
parseInt,
(front, rear) => front - rear
)
.yield()
console.log(largestNumberedStringOfArray)
// ↑ 5
try {
await koconutArray
.filter(eachString => eachString.length > 2)
.maxOfWith(
parseInt,
(front, rear) => front - rear
)
.yield()
} catch(error) {
console.log(error.name)
// ↑ Koconut No Such Element Exception
// i.e. -- Array is filtered.
// No string in "1" to "5" is logner than 2.
}
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of("a", "ab", "abc")
const lognestStringLengthOfSet = await koconutSet
.maxOfWith(
eachString => eachString.length,
(front, rear) => front - rear
)
.yield()
console.log(lognestStringLengthOfSet)
// ↑ 3
// Case 3 -- KoconutMap
const koconutMap = KoconutArray.of("a", "ab", "abc")
.associate(eachString => [eachString.length, eachString])
const longestStringLengthOfMap = await koconutMap
.maxOfWith(
eachEntry => eachEntry.key,
(front, rear) => front - rear
)
.yield()
console.log(longestStringLengthOfMap)
// ↑ 3
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(12,51,32,45,50)
const largestNumberOfArray2 = await koconutArray2
.maxOfWith(
async eachNumber => eachNumber,
async (front, rear) => front - rear
)
.yield()
console.log(largestNumberOfArray2)
// ↑ 51
const largest1sDigitOfArray2 = await koconutArray2
.maxOfWith(
(eachNumber) => new Promise<number>(resolve => {
resolve(eachNumber % 10)
}),
(front, rear) => new Promise(resolve => {
resolve(front - rear)
})
)
.yield()
console.log(largest1sDigitOfArray2)
// ↑ 5
A callback function that accepts an argument. The method calls the selector
one time for each element in object.
A callback function that accepts two arguements. The method calls the comparator
to compare two selected values.
In case the result is larger than 0, front is bigger than rear, and if it's less than 0 judge vice versa.
An object to which the this
keyword can refer in the selector
. If thisArg
is omitted, null
is used as the this
value.
An object to which the this
keyword can refer in the comparator
. If thisArg
is omitted, null
is used as the this
value.
Returns the largest value according to the provided comparator
among all values
produced by selector
function applied to each element in the collection or null
if elements are empty.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of("1", "2", "3", "4", "5")
const largestNumberedStringOfArray = await koconutArray
.maxOfWithOrNull(
parseInt,
(front, rear) => front - rear
)
.yield()
console.log(largestNumberedStringOfArray)
// ↑ 5
const largestNumberedStringOfEmptyArray = await koconutArray
.filter(eachString => eachString.length > 2)
.maxOfWithOrNull(
parseInt,
(front, rear) => front - rear
)
.yield()
console.log(largestNumberedStringOfEmptyArray)
// ↑ null
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of("a", "ab", "abc")
const lognestStringLengthOfSet = await koconutSet
.maxOfWithOrNull(
eachString => eachString.length,
(front, rear) => front - rear
)
.yield()
console.log(lognestStringLengthOfSet)
// ↑ 3
// Case 3 -- KoconutMap
const koconutMap = KoconutArray.of("a", "ab", "abc")
.associate(eachString => [eachString.length, eachString])
const longestStringLengthOfMap = await koconutMap
.maxOfWithOrNull(
eachEntry => eachEntry.key,
(front, rear) => front - rear
)
.yield()
console.log(longestStringLengthOfMap)
// ↑ 3
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(12,51,32,45,50)
const largestNumberOfArray2 = await koconutArray2
.maxOfWithOrNull(
async eachNumber => eachNumber,
async (front, rear) => front - rear
)
.yield()
console.log(largestNumberOfArray2)
// ↑ 51
const largest1sDigitOfArray2 = await koconutArray2
.maxOfWithOrNull(
(eachNumber) => new Promise<number>(resolve => {
resolve(eachNumber % 10)
}),
(front, rear) => new Promise(resolve => {
resolve(front - rear)
})
)
.yield()
console.log(largest1sDigitOfArray2)
// ↑ 5
A callback function that accepts an argument. The method calls the selector
one time for each element in object.
A callback function that accepts two arguements. The method calls the comparator
to compare two selected values.
In case the result is larger than 0, front is bigger than rear, and if it's less than 0 judge vice versa.
An object to which the this
keyword can refer in the selector
. If thisArg
is omitted, null
is used as the this
value.
An object to which the this
keyword can refer in the comparator
. If thisArg
is omitted, null
is used as the this
value.
Returns the first element having the largest value according to the provided comparator
or throws KoconutNoSuchElementException
if elements are empty.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const largestNumberOfArray = await koconutArray
.maxWith((front, rear) => front - rear)
.yield()
console.log(largestNumberOfArray)
// ↑ 5
try {
await koconutArray
.filter(eachNumber => eachNumber > 10)
.maxWith((front, rear) => front - rear)
.yield()
} catch(error) {
console.log(error.name)
// ↑ Koconut No Such Element Exception
// i.e. -- Array is filtered.
// No element in 1 to 5 is greater than 10.
}
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of("a", "ab", "abc", "abcd")
const longestStringLengthOfSet = await koconutSet
.maxWith((front, rear) => front.length - rear.length)
.yield()
console.log(longestStringLengthOfSet)
// ↑ abcd
// Case 3
const koconutMap = KoconutArray.of("a", "ab", "abc")
.associate(eachString => [eachString.length, eachString])
const longestStringLengthEntryOfMap = await koconutMap
.maxWith((front, rear) => front.key - rear.key)
.yield()
console.log(longestStringLengthEntryOfMap)
// ↑ Entry { keyElement: 3, valueElement: 'abc' }
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(12,51,32,45,50)
const largestNumberOfArray2 = await koconutArray2
.maxWith(async (front, rear) => front - rear)
.yield()
console.log(largestNumberOfArray2)
// ↑ 51
const largest1sDigitNumberOfArray2 = await koconutArray2
.maxWith((front, rear) => new Promise(resolve => {
resolve(front % 10 - rear % 10)
}))
.yield()
console.log(largest1sDigitNumberOfArray2)
// ↑ 45
A callback function that accepts two arguements. The method calls the comparator
to compare two selected values.
In case the result is larger than 0, front is bigger than rear, and if it's less than 0 judge vice versa.
An object to which the this
keyword can refer in the comparator
. If thisArg
is omitted, null
is used as the this
value.
Returns the first element having the largest value according to the provided comparator
or null
if elements are empty.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const largestNumberOfArray = await koconutArray
.maxWithOrNull((front, rear) => front - rear)
.yield()
console.log(largestNumberOfArray)
// ↑ 5
const largestNumberOfEmptyArray = await koconutArray
.filter(eachNumber => eachNumber > 10)
.maxWithOrNull((front, rear) => front - rear)
.yield()
console.log(largestNumberOfEmptyArray)
// ↑ null
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of("a", "ab", "abc", "abcd")
const longestStringLengthOfSet = await koconutSet
.maxWithOrNull((front, rear) => front.length - rear.length)
.yield()
console.log(longestStringLengthOfSet)
// ↑ abcd
// Case 3
const koconutMap = KoconutArray.of("a", "ab", "abc")
.associate(eachString => [eachString.length, eachString])
const longestStringLengthEntryOfMap = await koconutMap
.maxWithOrNull((front, rear) => front.key - rear.key)
.yield()
console.log(longestStringLengthEntryOfMap)
// ↑ Entry { keyElement: 3, valueElement: 'abc' }
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(12,51,32,45,50)
const largestNumberOfArray2 = await koconutArray2
.maxWithOrNull(async (front, rear) => front - rear)
.yield()
console.log(largestNumberOfArray2)
// ↑ 51
const largest1sDigitNumberOfArray2 = await koconutArray2
.maxWithOrNull((front, rear) => new Promise(resolve => {
resolve(front % 10 - rear % 10)
}))
.yield()
console.log(largest1sDigitNumberOfArray2)
// ↑ 45
A callback function that accepts two arguements. The method calls the comparator
to compare two selected values.
In case the result is larger than 0, front is bigger than rear, and if it's less than 0 judge vice versa.
An object to which the this
keyword can refer in the comparator
. If thisArg
is omitted, null
is used as the this
value.
Returns the first element yielding the smallest value of the given function or throws KoconutNoSuchElementException if there are no elements.
1.0.10
Use minByOrNull instead.
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const smallestNumberOfArray = await koconutArray
.minBy(eachNumber => eachNumber)
.yield()
console.log(smallestNumberOfArray)
// ↑ 1
try {
await koconutArray
.filter(eachNumber => eachNumber > 10)
.minBy(eachNumber => eachNumber)
.yield()
} catch(error) {
console.log(error.name)
// ↑ Koconut No Such Element Exception
// i.e. -- Array is filtered.
// No element in 1 to 5 is greater than 10.
}
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of("a", "ab", "abc")
const shortestStringOfSet = await koconutSet
.minBy(eachString => eachString.length)
.yield()
console.log(shortestStringOfSet)
// ↑ a
// Case 3 -- KoconutMap
const koconutMap = KoconutArray.of(1, 12, 123)
.associateWith(eachNumber => eachNumber.toString())
const shortestDigitsEntryOfMap = await koconutMap
.minBy(eachEntry => eachEntry.value.length)
.yield()
console.log(shortestDigitsEntryOfMap)
// ↑ Entry { keyElement: 1, valueElement: '1' }
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(19,27,32)
const smallestNumberOfArray2 = await koconutArray2
.minBy(async eachNumber => eachNumber)
.yield()
console.log(smallestNumberOfArray2)
// ↑ 19
const smallest1sDigitNumberOfArray2 = await koconutArray2
.minBy(eachNumber => new Promise(resolve => {
resolve(eachNumber % 10)
}))
.yield()
console.log(smallest1sDigitNumberOfArray2)
// ↑ 32
A callback function that accepts an argument. The method calls the selector
one time for each element in object.
An object to which the this
keyword can refer in the selector
. If thisArg
is omitted, null
is used as the this
value.
Returns the first element yielding the smallest value of the given function or null
if there are no elements.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const smallestNumberOfArray = await koconutArray
.minByOrNull(eachNumber => eachNumber)
.yield()
console.log(smallestNumberOfArray)
// ↑ 1
const smallestNumberOfEmptyArray = await koconutArray
.filter(eachNumber => eachNumber > 10)
.minByOrNull(eachNumber => eachNumber)
.yield()
console.log(smallestNumberOfEmptyArray)
// ↑ null
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of("a", "ab", "abc")
const shortestStringOfSet = await koconutSet
.minByOrNull(eachString => eachString.length)
.yield()
console.log(shortestStringOfSet)
// ↑ a
// Case 3 -- KoconutMap
const koconutMap = KoconutArray.of(1, 12, 123)
.associateWith(eachNumber => eachNumber.toString())
const shortestDigitsEntryOfMap = await koconutMap
.minByOrNull(eachEntry => eachEntry.value.length)
.yield()
console.log(shortestDigitsEntryOfMap)
// ↑ Entry { keyElement: 1, valueElement: '1' }
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(19,27,32)
const smallestNumberOfArray2 = await koconutArray2
.minByOrNull(async eachNumber => eachNumber)
.yield()
console.log(smallestNumberOfArray2)
// ↑ 19
const smallest1sDigitNumberOfArray2 = await koconutArray2
.minByOrNull(eachNumber => new Promise(resolve => {
resolve(eachNumber % 10)
}))
.yield()
console.log(smallest1sDigitNumberOfArray2)
// ↑ 32
A callback function that accepts an argument. The method calls the selector
one time for each element in object.
An object to which the this
keyword can refer in the selector
. If thisArg
is omitted, null
is used as the this
value.
Returns the smallest value among all values produced by selector
function applied to each element in the collection or
throws KoconutNoSuchElementException if there are no elements.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,7,9)
const smallestRemainderNumberDividedBy5OfArray = await koconutArray
.minOf(eachNumber => eachNumber % 5)
.yield()
console.log(smallestRemainderNumberDividedBy5OfArray)
// ↑ 1
try {
await koconutArray
.filter(eachNumber => eachNumber > 10)
.minOf(eachNumber => eachNumber % 5)
.yield()
} catch(error) {
console.log(error.name)
// ↑ Koconut No Such Element Exception
// i.e. -- Array is filtered.
// No element in 1 to 5 is greater than 10.
}
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of("a", "ab", "abc")
const shortestStringLengthOfSet = await koconutSet
.minOf(eachString => eachString.length)
.yield()
console.log(shortestStringLengthOfSet)
// ↑ 1
class ComparableString implements KoconutComparable{
str : string
constructor(str : string) {
this.str = str
}
// Override
compareTo(other : ComparableString) : number {
return this.str.length - other.str.length
}
}
const minComparableString = await koconutSet
.minOf(eachString => new ComparableString(eachString))
.yield()
console.log(minComparableString)
// ↑ ComparableString { str: 'a' }
// Case 3 -- KoconutMap
const koconutMap = KoconutArray.of("a", "ab", "abc")
.associate(eachString => [eachString.length, eachString])
const shortestStringLengthOfMap = await koconutMap
.minOf(eachEntry => eachEntry.key)
.yield()
console.log(shortestStringLengthOfMap)
// ↑ 1
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(12,51,32,45,50)
const smallestNumberOfArray2 = await koconutArray2
.minOf(async eachNumber => eachNumber)
.yield()
console.log(smallestNumberOfArray2)
// ↑ 12
const smallest1sDigitOfArray2 = await koconutArray2
.minOf(eachNumber => new Promise(resolve => {
resolve(eachNumber % 10)
}))
.yield()
console.log(smallest1sDigitOfArray2)
// ↑ 0
A callback function that accepts an argument. The method calls the selector
one time for each element in object.
An object to which the this
keyword can refer in the selector
. If thisArg
is omitted, null
is used as the this
value.
Returns the smallest value among all values produced by selector
function applied to each element in the collection or
null
if there are no elements.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,7,9)
const smallestRemainderNumberDividedBy5OfArray = await koconutArray
.minOfOrNull(eachNumber => eachNumber % 5)
.yield()
console.log(smallestRemainderNumberDividedBy5OfArray)
// ↑ 1
const smallestRemainderNumberDividedBy5OfEmptyArray = await koconutArray
.filter(eachNumber => eachNumber > 10)
.minOfOrNull(eachNumber => eachNumber % 5)
.yield()
console.log(smallestRemainderNumberDividedBy5OfEmptyArray)
// ↑ null
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of("a", "ab", "abc")
const shortestStringLengthOfSet = await koconutSet
.minOfOrNull(eachString => eachString.length)
.yield()
console.log(shortestStringLengthOfSet)
// ↑ 1
class ComparableString implements KoconutComparable{
str : string
constructor(str : string) {
this.str = str
}
// Override
compareTo(other : ComparableString) : number {
return this.str.length - other.str.length
}
}
const minComparableString = await koconutSet
.minOfOrNull(eachString => new ComparableString(eachString))
.yield()
console.log(minComparableString)
// ↑ ComparableString { str: 'a' }
// Case 3 -- KoconutMap
const koconutMap = KoconutArray.of("a", "ab", "abc")
.associate(eachString => [eachString.length, eachString])
const shortestStringLengthOfMap = await koconutMap
.minOfOrNull(eachEntry => eachEntry.key)
.yield()
console.log(shortestStringLengthOfMap)
// ↑ 1
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(12,51,32,45,50)
const smallestNumberOfArray2 = await koconutArray2
.minOfOrNull(async eachNumber => eachNumber)
.yield()
console.log(smallestNumberOfArray2)
// ↑ 12
const smallest1sDigitOfArray2 = await koconutArray2
.minOfOrNull(eachNumber => new Promise(resolve => {
resolve(eachNumber % 10)
}))
.yield()
console.log(smallest1sDigitOfArray2)
// ↑ 0
A callback function that accepts an argument. The method calls the selector
one time for each element in object.
An object to which the this
keyword can refer in the selector
. If thisArg
is omitted, null
is used as the this
value.
Returns the smallest value according to the provided comparator
among all values
produced by selector
function applied to each element in the collection all throws KoconutNoSuchElementException
if elements are empty.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of("1", "2", "3", "4", "5")
const smallestNumberedStringOfArray = await koconutArray
.minOfWith(
parseInt,
(front, rear) => front - rear
)
.yield()
console.log(smallestNumberedStringOfArray)
// ↑ 1
try {
await koconutArray
.filter(eachString => eachString.length > 2)
.minOfWith(
parseInt,
(front, rear) => front - rear
)
.yield()
} catch(error) {
console.log(error.name)
// ↑ Koconut No Such Element Exception
// i.e. -- Array is filtered.
// No string in "1" to "5" is logner than 2.
}
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of("a", "ab", "abc")
const shortestStringLengthOfSet = await koconutSet
.minOfWith(
eachString => eachString.length,
(front, rear) => front - rear
)
.yield()
console.log(shortestStringLengthOfSet)
// ↑ 1
// Case 3 -- KoconutMap
const koconutMap = KoconutArray.of("a", "ab", "abc")
.associate(eachString => [eachString.length, eachString])
const shortestStringLengthOfMap = await koconutMap
.minOfWith(
eachEntry => eachEntry.key,
(front, rear) => front - rear
)
.yield()
console.log(shortestStringLengthOfMap)
// ↑ 1
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(12,51,32,45,50)
const smallestNumberOfArray2 = await koconutArray2
.minOfWith(
async eachNumber => eachNumber,
async (front, rear) => front - rear
)
.yield()
console.log(smallestNumberOfArray2)
// ↑ 12
const smallest1sDigitOfArray2 = await koconutArray2
.minOfWith(
(eachNumber) => new Promise<number>(resolve => {
resolve(eachNumber % 10)
}),
(front, rear) => new Promise(resolve => {
resolve(front - rear)
})
)
.yield()
console.log(smallest1sDigitOfArray2)
// ↑ 0
A callback function that accepts an argument. The method calls the selector
one time for each element in object.
A callback function that accepts two arguements. The method calls the comparator
to compare two selected values.
In case the result is larger than 0, front is bigger than rear, and if it's less than 0 judge vice versa.
An object to which the this
keyword can refer in the selector
. If thisArg
is omitted, null
is used as the this
value.
An object to which the this
keyword can refer in the comparator
. If thisArg
is omitted, null
is used as the this
value.
Returns the smallest value according to the provided comparator
among all values
produced by selector
function applied to each element in the collection all null
if elements are empty.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of("1", "2", "3", "4", "5")
const smallestNumberedStringOfArray = await koconutArray
.minOfWithOrNull(
parseInt,
(front, rear) => front - rear
)
.yield()
console.log(smallestNumberedStringOfArray)
// ↑ 1
const smallestNumberedStringOfEmptyArray = await koconutArray
.filter(eachString => eachString.length > 2)
.minOfWithOrNull(
parseInt,
(front, rear) => front - rear
)
.yield()
console.log(smallestNumberedStringOfEmptyArray)
// ↑ null
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of("a", "ab", "abc")
const shortestStringLengthOfSet = await koconutSet
.minOfWithOrNull(
eachString => eachString.length,
(front, rear) => front - rear
)
.yield()
console.log(shortestStringLengthOfSet)
// ↑ 1
// Case 3 -- KoconutMap
const koconutMap = KoconutArray.of("a", "ab", "abc")
.associate(eachString => [eachString.length, eachString])
const shortestStringLengthOfMap = await koconutMap
.minOfWithOrNull(
eachEntry => eachEntry.key,
(front, rear) => front - rear
)
.yield()
console.log(shortestStringLengthOfMap)
// ↑ 1
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(12,51,32,45,50)
const smallestNumberOfArray2 = await koconutArray2
.minOfWithOrNull(
async eachNumber => eachNumber,
async (front, rear) => front - rear
)
.yield()
console.log(smallestNumberOfArray2)
// ↑ 12
const smallest1sDigitOfArray2 = await koconutArray2
.minOfWithOrNull(
(eachNumber) => new Promise<number>(resolve => {
resolve(eachNumber % 10)
}),
(front, rear) => new Promise(resolve => {
resolve(front - rear)
})
)
.yield()
console.log(smallest1sDigitOfArray2)
// ↑ 0
A callback function that accepts an argument. The method calls the selector
one time for each element in object.
A callback function that accepts two arguements. The method calls the comparator
to compare two selected values.
In case the result is larger than 0, front is bigger than rear, and if it's less than 0 judge vice versa.
An object to which the this
keyword can refer in the selector
. If thisArg
is omitted, null
is used as the this
value.
An object to which the this
keyword can refer in the comparator
. If thisArg
is omitted, null
is used as the this
value.
Returns the first element having the smallest value according to the provided comparator
or throws KoconutNoSuchElementException
if elements are empty.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const smallestNumberOfArray = await koconutArray
.minWith((front, rear) => front - rear)
.yield()
console.log(smallestNumberOfArray)
// ↑ 1
try {
await koconutArray
.filter(eachNumber => eachNumber > 10)
.minWith((front, rear) => front - rear)
.yield()
} catch(error) {
console.log(error.name)
// ↑ Koconut No Such Element Exception
// i.e. -- Array is filtered.
// No element in 1 to 5 is greater than 10.
}
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of("a", "ab", "abc", "abcd")
const shortestStringLengthOfSet = await koconutSet
.minWith((front, rear) => front.length - rear.length)
.yield()
console.log(shortestStringLengthOfSet)
// ↑ a
// Case 3
const koconutMap = KoconutArray.of("a", "ab", "abc")
.associate(eachString => [eachString.length, eachString])
const shortestStringLengthEntryOfMap = await koconutMap
.minWith((front, rear) => front.key - rear.key)
.yield()
console.log(shortestStringLengthEntryOfMap)
// ↑ Entry { keyElement: 1, valueElement: 'a' }
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(12,51,32,45,50)
const smallestNumberOfArray2 = await koconutArray2
.minWith(async (front, rear) => front - rear)
.yield()
console.log(smallestNumberOfArray2)
// ↑ 12
const smallest1sDigitNumberOfArray2 = await koconutArray2
.minWith((front, rear) => new Promise(resolve => {
resolve(front % 10 - rear % 10)
}))
.yield()
console.log(smallest1sDigitNumberOfArray2)
// ↑ 50
A callback function that accepts two arguements. The method calls the comparator
to compare two selected values.
In case the result is larger than 0, front is bigger than rear, and if it's less than 0 judge vice versa.
An object to which the this
keyword can refer in the comparator
. If thisArg
is omitted, null
is used as the this
value.
Returns the first element having the smallest value according to the provided comparator
or null
if elements are empty.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const smallestNumberOfArray = await koconutArray
.minWithOrNull((front, rear) => front - rear)
.yield()
console.log(smallestNumberOfArray)
// ↑ 1
const smallestNumberOfEmptyArray = await koconutArray
.filter(eachNumber => eachNumber > 10)
.minWithOrNull((front, rear) => front - rear)
.yield()
console.log(smallestNumberOfEmptyArray)
// ↑ null
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of("a", "ab", "abc", "abcd")
const shortestStringLengthOfSet = await koconutSet
.minWithOrNull((front, rear) => front.length - rear.length)
.yield()
console.log(shortestStringLengthOfSet)
// ↑ a
// Case 3
const koconutMap = KoconutArray.of("a", "ab", "abc")
.associate(eachString => [eachString.length, eachString])
const shortestStringLengthEntryOfMap = await koconutMap
.minWithOrNull((front, rear) => front.key - rear.key)
.yield()
console.log(shortestStringLengthEntryOfMap)
// ↑ Entry { keyElement: 1, valueElement: 'a' }
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(12,51,32,45,50)
const smallestNumberOfArray2 = await koconutArray2
.minWithOrNull(async (front, rear) => front - rear)
.yield()
console.log(smallestNumberOfArray2)
// ↑ 12
const smallest1sDigitNumberOfArray2 = await koconutArray2
.minWithOrNull((front, rear) => new Promise(resolve => {
resolve(front % 10 - rear % 10)
}))
.yield()
console.log(smallest1sDigitNumberOfArray2)
// ↑ 50
A callback function that accepts two arguements. The method calls the comparator
to compare two selected values.
In case the result is larger than 0, front is bigger than rear, and if it's less than 0 judge vice versa.
An object to which the this
keyword can refer in the comparator
. If thisArg
is omitted, null
is used as the this
value.
Creates an KoconutArray instance that wraps original data.
1.0.13
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const arrToArr = await koconutArray
.asArray()
.yield()
console.log(arrToArr)
// ↑ [ 1, 2, 3, 4, 5 ]
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,1,2,2,3,3,4,4,5,5)
const setToArr = await koconutSet
.asArray()
.yield()
console.log(setToArr)
// ↑ [ 1, 2, 3, 4, 5 ]
// Case 3 -- KoconutFlow
const koconutFlow = KoconutFlow.ofSimple(1,2,3,4,5)
const flowToArr = await koconutFlow
.asArray()
.yield()
console.log(flowToArr)
// ↑
// [
// Entry { keyElement: 0, valueElement: 1 },
// Entry { keyElement: 1, valueElement: 2 },
// Entry { keyElement: 2, valueElement: 3 },
// Entry { keyElement: 3, valueElement: 4 },
// Entry { keyElement: 4, valueElement: 5 }
// ]
// Case 4 -- KoconutMap
const koconutMap = KoconutArray.of(1,2,3,4,5)
.associate(eachNumber => [eachNumber, eachNumber])
const mapToArr = await koconutMap
.asArray()
.yield()
console.log(mapToArr)
// ↑
// [
// Entry { keyElement: 1, valueElement: 1 },
// Entry { keyElement: 2, valueElement: 2 },
// Entry { keyElement: 3, valueElement: 3 },
// Entry { keyElement: 4, valueElement: 4 },
// Entry { keyElement: 5, valueElement: 5 }
// ]
Creates an KoconutSet instance that wraps original data.
1.0.13
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const arrToSet = await koconutArray
.asSet()
.yield()
console.log(arrToSet)
// ↑ Set { 1, 2, 3, 4, 5 }
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,1,2,2,3,3,4,4,5,5)
const setToSet = await koconutSet
.asSet()
.yield()
console.log(setToSet)
// ↑ Set { 1, 2, 3, 4, 5 }
// Case 3 -- KoconutFlow
const koconutFlow = KoconutFlow.ofSimple(1,2,3,4,5)
const flowToSet = await koconutFlow
.asSet()
.yield()
console.log(flowToSet)
// ↑
// Set {
// Entry { keyElement: 0, valueElement: 1 },
// Entry { keyElement: 1, valueElement: 2 },
// Entry { keyElement: 2, valueElement: 3 },
// Entry { keyElement: 3, valueElement: 4 },
// Entry { keyElement: 4, valueElement: 5 }
// }
// Case 4 -- KoconutMap
const koconutMap = KoconutArray.of(1,2,3,4,5)
.associate(eachNumber => [eachNumber, eachNumber])
const mapToSet = await koconutMap
.asSet()
.yield()
console.log(mapToSet)
// ↑
// Set {
// Entry { keyElement: 1, valueElement: 1 },
// Entry { keyElement: 2, valueElement: 2 },
// Entry { keyElement: 3, valueElement: 3 },
// Entry { keyElement: 4, valueElement: 4 },
// Entry { keyElement: 5, valueElement: 5 }
// }
Static
fromCreates a new instance from iterable
object.
1.0.11
const numbers = Array.of(1,2,3,4,5)
const koconutNumbers = KoconutSet.from(numbers)
// ↑ This is a Koconut number set consists of 1 to 5.
const emptyNumberSet = KoconutSet.from<number>()
// ↑ This is an empty Koconut number set.
An array-like iterable
object to convert to a KoconutSet.
Static
generateCreates a new instance with given count
as number of values. count
cannot be negative number.
Each value is provided from generator
with given ordered index.
KoconutInvalidArgumentException
-- When count
is less than 0.
1.0.14
const evenNumberSet = await KoconutSet.generate(5, i => i*2)
.yield()
console.log(evenNumberSet)
// ↑ Set { 0, 2, 4, 6, 8 }
Number of values.
A callback function that accepts an argument. The method calls the action
one time for each ordered index.
An object to which the this
keyword can refer in the generator
. If thisArg
is omitted, null
is used as the this
value.
Static
ofCreates a new instance from variable number of arguments.
1.0.11
const koconutNumbers = KoconutSet.of(1,2,3,4,5)
// ↑ This is a Koconut number set consists of 1 to 5.
const emptyNumberSet = KoconutSet.of<number>()
// ↑ This is an empty Koconut number set.
Rest
...data: DataType[]A set of elements to include in the new KoconutSet object.
Return true
if all elements match te given predicate
.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const areAllArrayElementsGreaterThan0 = await koconutArray
.all(eachNumber => eachNumber > 0)
.yield()
console.log(areAllArrayElementsGreaterThan0)
// ↑ true
const areAllArrayElementsEven = await koconutArray
.all(eachNumber => eachNumber % 2 == 0)
.yield()
console.log(areAllArrayElementsEven)
// ↑ false -- i.e. '1' is not an even number.
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const areAllSetElementsGreaterThan0 = await koconutSet
.all(eachNumber => eachNumber > 0)
.yield()
console.log(areAllSetElementsGreaterThan0)
// ↑ true
const areAllSetElementsOdd = await koconutSet
.all(eachNumber => eachNumber % 2 == 1)
.yield()
console.log(areAllSetElementsOdd)
// ↑ false -- i.e. '2' is not an odd number.
// Case 3 -- KoconutMap
const koconutMap = KoconutMap.of(
[0, 0],
[1, 1],
[2, 2]
)
const areAllMapEntriesKeyEqualsToValue = await koconutMap
.all(eachEntry => eachEntry.key == eachEntry.value)
.yield()
console.log(areAllMapEntriesKeyEqualsToValue)
// ↑ true
const areAllMapEntriesSumGreaterThan3 = await koconutMap
.all(eachEntry => eachEntry.key + eachEntry.value > 3)
.yield()
console.log(areAllMapEntriesSumGreaterThan3)
// ↑ false -- i.e. Sum of key and value of first Entry { 0, 0 } is 0.
// It's definetly less than 3
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(1,2,3,4,5)
const areAllArrayElementsLessThan10 = await koconutArray2
.all(async eachNumber => eachNumber < 10)
.yield()
console.log(areAllArrayElementsLessThan10)
// ↑ true
const areAllArrayElementsOdd = await koconutArray2
.all(eachNumber => new Promise(resolve => {
resolve(eachNumber % 2 == 1)
}))
.yield()
console.log(areAllArrayElementsOdd)
// ↑ false -- i.e. '2' is not an odd number.
A callback function that accepts an argument. The method calls the predicate
one time for each element in object.
An object to which the this
keyword can refer in the predicate
. If thisArg
is omitted, null
is used as the this
value.
Returns true
if the collection has at least one element matches the given predicate
.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const isAnyArrayElementGreaterThan4 = await koconutArray
.any(eachNumber => eachNumber > 4)
.yield()
console.log(isAnyArrayElementGreaterThan4)
// ↑ true -- i.e. '5' is greater than 4.
const isAnyArrayElementMultipleOf6 = await koconutArray
.any(eachNumber => eachNumber % 6 == 0)
.yield()
console.log(isAnyArrayElementMultipleOf6)
// ↑ false
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const isAnySetElementGreaterThan3 = await koconutSet
.any(eachNumber => eachNumber > 3)
.yield()
console.log(isAnySetElementGreaterThan3)
// ↑ true -- i.e. '4' is greater than 3.
const isAnySetElementLessThan0 = await koconutSet
.any(eachNumber => eachNumber < 0)
.yield()
console.log(isAnySetElementLessThan0)
// ↑ false
// Case 3 -- KoconutMap
const koconutMap = KoconutMap.of(
[0, 0],
[1, 1],
[2, 2]
)
const isAnyMapEntrySumGreaterThan3 = await koconutMap
.any(eachEntry => eachEntry.key + eachEntry.value > 3)
.yield()
console.log(isAnyMapEntrySumGreaterThan3)
// ↑ true -- i.e. Sum of key and value of third Entry { 2, 2 } is 4.
// It's grater than 4.
const isAnyMapEntryKeyMultipleOf4 = await koconutMap
.any(eachEntry => eachEntry.key > 0 && eachEntry.key % 4 == 0)
.yield()
console.log(isAnyMapEntryKeyMultipleOf4)
// ↑ false
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(1,2,3,4,5)
const isAnyArrayElementLessThan2 = await koconutArray2
.any(async eachNumber => eachNumber < 2)
.yield()
console.log(isAnyArrayElementLessThan2)
// ↑ true -- i.e. '1' is less than 2.
const isAnyArrayElementGreaterThan7 = await koconutArray2
.any(eachNumber => new Promise(resolve => {
resolve(eachNumber > 7)
}))
.yield()
console.log(isAnyArrayElementGreaterThan7)
// ↑ false
A callback function that accepts an argument. The method calls the predicate
one time for each element in object.
An object to which the this
keyword can refer in the predicate
. If thisArg
is omitted, null
is used as the this
value.
Checks if the specified element is contained in this collection.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const doesArrayContain3 = await koconutArray
.contains(3)
.yield()
console.log(doesArrayContain3)
// ↑ true
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const doesSetContains6 = await koconutSet
.contains(6)
.yield()
console.log(doesSetContains6)
// ↑ false
The element to search for.
Checks if all the elements are contained in this collection.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const doesArrayContain1to3 = await koconutArray
.containsAll([1,2,3])
.yield()
console.log(doesArrayContain1to3)
// ↑ true
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const doesSetContains5to6 = await koconutSet
.containsAll([5,6,7])
.yield()
console.log(doesSetContains5to6)
// ↑ false
The elements to search for.
Returns true
if the collection is empty (contains no elements), false
otherwise.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const isNumberArrayEmpty = await koconutArray
.isEmpty()
.yield()
console.log(isNumberArrayEmpty)
// ↑ false
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const isFilteredNumberSetEmpty = await koconutSet
.filter(eachNumber => eachNumber > 10)
.isEmpty()
.yield()
console.log(isFilteredNumberSetEmpty)
// ↑ true
// Case 3 -- KoconutMap
const koconutMap = new KoconutMap<number, number>()
const isNumberPairedMapEmpty = await koconutMap
.isEmpty()
.yield()
console.log(isNumberPairedMapEmpty)
// ↑ true
Returns true
if the collection is not empty.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const isNumberArrayEmpty = await koconutArray
.isNotEmpty()
.yield()
console.log(isNumberArrayEmpty)
// ↑ true
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const isFilteredNumberSetEmpty = await koconutSet
.filter(eachNumber => eachNumber > 10)
.isNotEmpty()
.yield()
console.log(isFilteredNumberSetEmpty)
// ↑ false
// Case 3 -- KoconutMap
const koconutMap = new KoconutMap<number, number>()
const isNumberPairedMapEmpty = await koconutMap
.isNotEmpty()
.yield()
console.log(isNumberPairedMapEmpty)
// ↑ false
Returns true
if this nullable collection is either null or empty.
1.0.10
Use isEmpty instead.
1.3.0
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const isNumberArrayEmpty = await koconutArray
.isNullOrEmpty()
.yield()
console.log(isNumberArrayEmpty)
// ↑ false
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const isFilteredNumberSetEmpty = await koconutSet
.filter(eachNumber => eachNumber > 10)
.isNullOrEmpty()
.yield()
console.log(isFilteredNumberSetEmpty)
// ↑ true
// Case 3 -- KoconutMap
const koconutMap = new KoconutMap<number, number>()
const isNumberPairedMapEmpty = await koconutMap
.isNullOrEmpty()
.yield()
console.log(isNumberPairedMapEmpty)
// ↑ true
predicate
callback function is optional. If it's omitted the method returns true
if the collection has no elements.
Otherwise, returns true
if no elements match the given predicate
.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = new KoconutArray<number>()
const isNoneOfAnEmptyArray = await koconutArray
.none()
.yield()
console.log(isNoneOfAnEmptyArray)
// ↑ true
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const isNoneOfSetElementGreaterThan10 = await koconutSet
.none(eachNumber => eachNumber >= 10)
.yield()
console.log(isNoneOfSetElementGreaterThan10)
// ↑ true
// Case 3 -- KoconutMap
const koconutMap = KoconutArray.of(1,2,3,4,5)
.associateWith(eachNumber => eachNumber * 2)
const isNoneOfEntryOfMapHasLessThan3DifferenceBetweenKeyAndValue
= await koconutMap
.none(eachEntry => eachEntry.value - eachEntry.key <= 3)
.yield()
console.log(isNoneOfEntryOfMapHasLessThan3DifferenceBetweenKeyAndValue)
// ↑ false
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(1,2,3,4,5)
const isNoneOfArrayElementGreaterThan3 = await koconutArray2
.none(async eachNumber => eachNumber >= 3)
.yield()
console.log(isNoneOfArrayElementGreaterThan3)
// ↑ false
const isNoneOfArrayelementLessThan0 = await koconutArray2
.none(eachNumber => new Promise(resolve => {
resolve(eachNumber <= 0)
}))
.yield()
console.log(isNoneOfArrayelementLessThan0)
// ↑ true
A callback function that accepts an argument. The method calls the predicate
one time for each element in object.
An object to which the this
keyword can refer in the predicate
. If thisArg
is omitted, null
is used as the this
value.
Performs the given action
on each element.
When you want to stop iteration in the meantime return
false
or BREAK.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5,6,7)
await koconutArray
.forEach(console.log)
// ↑ 1 2 3 4 5 6 7 -- i.e. This will print out each number
.process()
await koconutArray
.forEach(eachNumber => {
if(eachNumber > 4) return KoconutLoopSignal.BREAK
console.log(eachNumber)
})
// ↑ 1 2 3 4 -- i.e. Since '5', it is greater than 4, so the loop is broken.
.process()
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,1,2,3)
await koconutSet
.forEach(console.log)
// ↑ 1 2 3 -- i.e. All conflicted numbers will be ignored.
.process()
await koconutSet
.forEach(eachNumber => {
if(eachNumber % 2 == 0) return false
console.log(eachNumber)
})
// ↑ 1 -- i.e. Since '2', it is an even number, so the loop is broken.
.process()
// Case 3 -- KoconutMap
const koconutMap = KoconutArray.of(1,2,3)
.associateWith(eachElement => eachElement)
await koconutMap
.forEach(console.log)
// ↑
// Entry { keyElement: 1, valueElement: 1 }
// Entry { keyElement: 2, valueElement: 2 }
// Entry { keyElement: 3, valueElement: 3 }
.process()
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(1,2,3)
await koconutArray2
.forEach(async eachNumber => console.log(eachNumber))
// ↑ 1 2 3
.process()
await koconutArray2
.forEach(eachNumber => new Promise(resolve => resolve(console.log(eachNumber))))
// ↑ 1 2 3
.process()
A callback function that accepts an argument. The method calls the action
one time for each element in object.
An object to which the this
keyword can refer in the action
. If thisArg
is omitted, null
is used as the this
value.
Performs the given action
on each element, providing sequential index with the element.
When you want to stop iteration in the meantime return
false
or BREAK.
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5,6,7)
await koconutArray
.forEachIndexed(console.log)
// ↑ 0 1
// 1 2
// 2 3
// 3 4
// 4 5
// 5 6
// 6 7
.process()
await koconutArray
.forEachIndexed((eachIndex, eachNumber) => {
if(eachIndex == 3) return KoconutLoopSignal.BREAK
console.log(eachNumber)
})
// ↑ 1 2 3 -- i.e. Since when the index is '3', the loop is interrupted.
// The last printed number(element) would be '3'.
.process()
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,1,2,3)
await koconutSet
.forEachIndexed(console.log)
// ↑ 0 1
// 1 2
// 2 3
.process()
await koconutSet
.forEachIndexed((eachIndex, eachNumber) => {
if(eachIndex != 0 && eachIndex % 2 == 0) return false
console.log(eachNumber)
})
// ↑ 1 2 -- i.e. Since when the index '2', it's an even number.
// So the loop is interrupted.
// The last printed number(element) would be '2'
.process()
// Case 3 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(1,2,3)
await koconutArray2
.forEachIndexed(async (eachIndex, eachNumber) =>
console.log(eachIndex, eachNumber))
// ↑ 0 1
// 1 2
// 2 3
.process()
await koconutArray2
.forEachIndexed(async (eachIndex, eachNumber) => new Promise(resolve => {
resolve(console.log(eachIndex, eachNumber))
}))
// ↑ 0 1
// 1 2
// 2 3
.process()
A callback function that accepts two arguments. The method calls the action
one time for each index and element in object.
An object to which the this
keyword can refer in the action
. If thisArg
is omitted, null
is used as the this
value.
Perfroms the given action
on each element and returns the original collection itself afterwards.
When you want to stop iteration in the meantime return
false
or BREAK.
1.0.10
const koconutSet = KoconutSet.of(1,2,3,4,5)
const set = await koconutSet
.onEach(console.log)
// ↑ 1
// 2
// 3
// 4
// 5
.onEach(async eachNumber => {
if(eachNumber >= 3) return KoconutLoopSignal.BREAK
console.log(eachNumber)
})
// ↑ 1
// 2
.onEach(eachNumber => new Promise(resolve => {
if(eachNumber == 2) resolve(false)
else {
console.log(eachNumber)
resolve()
}
}))
// ↑ 1
.yield()
console.log(set)
// ↑ Set { 1, 2, 3, 4, 5 }
A callback function that accepts an argument. The method calls the action
one time for each element in object.
An object to which the this
keyword can refer in the action
. If thisArg
is omitted, null
is used as the this
value.
Performs the given action
on each element, providing sequential index with the element, and returns the collection itself afterwards.
When you want to stop iteration in the meantime return
false
or BREAK.
1.0.10
const koconutSet = KoconutSet.of(1,2,3,4,5)
const set = await koconutSet
.onEachIndexed(console.log)
// ↑ 0 1
// 1 2
// 2 3
// 3 4
// 4 5
.onEachIndexed(async (eachIndex, eachNumber) => {
if(eachIndex >= 2) return KoconutLoopSignal.BREAK
console.log(eachNumber)
})
// ↑ 1
// 2
.onEachIndexed((eachIndex, eachNumber) => new Promise(resolve => {
if(eachIndex == 2) resolve(false)
else {
console.log(eachNumber)
resolve()
}
}))
// ↑ 1
// 2
.yield()
console.log(set)
// ↑ Set { 1, 2, 3, 4, 5 }
A callback function that accepts two arguments. The method calls the action
one time for each index and element in object.
An object to which the this
keyword can refer in the action
. If thisArg
is omitted, null
is used as the this
value.
Returns a KoconutSet containing only distinct elements from this collection. If the type of data is a simple number or string, the method will check equality by using '==' operator, but if it's not, you'd better make your custom class inherits KoconutEquatable.
1.0.10
const numberKoconutSet = KoconutSet.of(1,1,2,2,3,3)
const distinctNumbers = await numberKoconutSet
.distinct()
.yield()
console.log(distinctNumbers)
// ↑ Set { 1, 2, 3 }
class SomeInfo {
info : string
constructor(info : string) {
this.info = info
}
}
const someInfoKoconutSet = KoconutSet.of(
new SomeInfo("A"),
new SomeInfo("A"),
new SomeInfo("B"),
new SomeInfo("B"),
new SomeInfo("C"),
new SomeInfo("C"),
)
const distinctSomeInfos = await someInfoKoconutSet
.distinct()
.yield()
console.log(distinctSomeInfos)
// ↑ Set {
// SomeInfo { info: 'A' },
// SomeInfo { info: 'A' },
// SomeInfo { info: 'B' },
// SomeInfo { info: 'B' },
// SomeInfo { info: 'C' },
// SomeInfo { info: 'C' }
// }
class SomeEquatableInfo implements KoconutEquatable {
info : string
constructor(info : string) {
this.info = info
}
equalsTo(other : SomeEquatableInfo) : boolean {
return this.info == other.info
}
}
const someEquatableInfoKoconutSet = KoconutSet.of(
new SomeEquatableInfo("A"),
new SomeEquatableInfo("A"),
new SomeEquatableInfo("B"),
new SomeEquatableInfo("B"),
new SomeEquatableInfo("C"),
new SomeEquatableInfo("C")
)
const distinctSomeEquatableInfos = await someEquatableInfoKoconutSet
.distinct()
.yield()
console.log(distinctSomeEquatableInfos)
// ↑ Set {
// SomeEquatableInfo { info: 'A' },
// SomeEquatableInfo { info: 'B' },
// SomeEquatableInfo { info: 'C' }
// }
Returns a KoconutSet containing only elements from the given collection having
distinct keys returned by the given selector
function.
1.0.10
const numberKoconutSet = KoconutSet.of(1,1,2,2,3,3)
const distinctNumbers = await numberKoconutSet
.distinctBy(eachNumber => eachNumber)
.yield()
console.log(distinctNumbers)
// ↑ Set { 1, 2, 3 }
class SomeInfo {
info : string
constructor(info : string) {
this.info = info
}
}
const someInfoKoconutSet = KoconutSet.of(
new SomeInfo("A"),
new SomeInfo("A"),
new SomeInfo("B"),
new SomeInfo("B"),
new SomeInfo("C"),
new SomeInfo("C")
)
const distinctSomeInfos = await someInfoKoconutSet
.distinctBy(eachSomeInfo => eachSomeInfo.info)
.yield()
console.log(distinctSomeInfos)
// ↑ Set {
// SomeInfo { info: 'A' },
// SomeInfo { info: 'B' },
// SomeInfo { info: 'C' }
// }
class SomeEquatableInfo implements KoconutEquatable {
info : string
constructor(info : string) {
this.info = info
}
equalsTo(other : SomeEquatableInfo) : boolean {
return this.info == other.info
}
}
class SomeEquatableInfoContainer {
someEquatableInfo : SomeEquatableInfo
additionalInfo : string
constructor(someEquatableInfo : SomeEquatableInfo, additionalInfo : string) {
this.someEquatableInfo = someEquatableInfo
this.additionalInfo = additionalInfo
}
}
const someEquatableInfoContainerKoconutSet = KoconutSet.of(
new SomeEquatableInfoContainer(
new SomeEquatableInfo("A"),
"First"
),
new SomeEquatableInfoContainer(
new SomeEquatableInfo("A"),
"Second"
),
new SomeEquatableInfoContainer(
new SomeEquatableInfo("B"),
"First"
),
new SomeEquatableInfoContainer(
new SomeEquatableInfo("B"),
"Second"
),
new SomeEquatableInfoContainer(
new SomeEquatableInfo("C"),
"First"
),
new SomeEquatableInfoContainer(
new SomeEquatableInfo("C"),
"Second"
)
)
const distinctSomeEquatableInfoContainersByEquatableInfo =
await someEquatableInfoContainerKoconutSet
.distinctBy(async eachContainer => eachContainer.someEquatableInfo)
.yield()
console.log(distinctSomeEquatableInfoContainersByEquatableInfo)
// ↑ Set {
// SomeEquatableInfoContainer {
// someEquatableInfo: SomeEquatableInfo { info: 'A' },
// additionalInfo: 'First'
// },
// SomeEquatableInfoContainer {
// someEquatableInfo: SomeEquatableInfo { info: 'B' },
// additionalInfo: 'First'
// },
// SomeEquatableInfoContainer {
// someEquatableInfo: SomeEquatableInfo { info: 'C' },
// additionalInfo: 'First'
// }
// }
const distinctSomeEquatableInfoContainersByAdditionalInfo =
await someEquatableInfoContainerKoconutSet
.distinctBy(eachContainer => new Promise(resolve => {
resolve(eachContainer.additionalInfo)
}))
.yield()
console.log(distinctSomeEquatableInfoContainersByAdditionalInfo)
// ↑ Set {
// SomeEquatableInfoContainer {
// someEquatableInfo: SomeEquatableInfo { info: 'A' },
// additionalInfo: 'First'
// },
// SomeEquatableInfoContainer {
// someEquatableInfo: SomeEquatableInfo { info: 'A' },
// additionalInfo: 'Second'
// }
// }
A callback function that accepts an argument. The method calls the selector
one time for each element in object.
An object to which the this
keyword can refer in the selector
. If thisArg
is omitted, null
is used as the this
value
Returns a KoconutSet containing all elements except first n
elements.
1.0.10
const koconutSet = KoconutSet.of(1,2,3,4,5)
const fisrt3ElementsDroppedSet = await koconutSet
.drop(3)
.yield()
console.log(fisrt3ElementsDroppedSet)
// ↑ Set { 4, 5 }
Elements number to except.
Returns a KoconutSet containg all elements except last n
elements.
1.0.10
const koconutSet = KoconutSet.of(1,2,3,4,5)
const last3ElementsDroppedSet = await koconutSet
.dropLast(3)
.yield()
console.log(last3ElementsDroppedSet)
// ↑ Set { 1, 2 }
Elements number to except.
Returns a KoconutSet containing all elements except last elements that satisfy the given predicate
.
1.0.10
const koconutSet = KoconutSet.of(
1,2,3,4,5,6,7,8,9,10
)
const greaterThan5DroppedSet = await koconutSet
.dropLastWhile(eachNumber => eachNumber > 5)
.yield()
console.log(greaterThan5DroppedSet)
// ↑ Set { 1, 2, 3, 4, 5 }
A callback function that accepts an argument. The method calls the predicate
one time for each element in object.
An object to which the this
keyword can refer in the predicate
. If thisArg
is omitted, null
is used as the this
value.
Returns a KoconutSet containing all elements except first elements that satisfy the given predicate
.
1.0.10
const koconutSet = KoconutSet.of(
1,2,3,4,5,6,7,8,9,10
)
const lessThan5DroppedSet = await koconutSet
.dropWhile(eachNumber => eachNumber < 5)
.yield()
console.log(lessThan5DroppedSet)
// ↑ Set { 5, 6, 7, 8, 9, 10 }
A callback function that accepts an argument. The method calls the predicate
one time for each element in object.
An object to which the this
keyword can refer in the predicate
. If thisArg
is omitted, null
is used as the this
value.
Returns a KoconutSet containing only elements matching the given predicate
.
1.0.10
const koconutSet = KoconutSet.of(1,2,3,4,5)
const evenNumbers = await koconutSet
.filter(eachNumber => eachNumber % 2 == 0)
.yield()
console.log(evenNumbers)
// ↑ Set { 2, 4 }
A callback function that accepts an argument. The method calls the predicate
one time for each element in object.
An object to which the this
keyword can refer in the predicate
. If thisArg
is omitted, null
is used as the this
value.
Returns a KoconutSet containing only elements matching the given predicate
with indexes.
1.0.10
const koconutSet = KoconutSet.of(0,1,2,5,6,7)
const numbersEqualToIndex = await koconutSet
.filterIndexed((eachIndex, eachNumber) => eachIndex == eachNumber)
.yield()
console.log(numbersEqualToIndex)
// ↑ Set { 0, 1, 2 }
A callback function that accepts two arguments. The method calls the predicate
one time for each index and element in object.
An object to which the this
keyword can refer in the predicate
. If thisArg
is omitted, null
is used as the this
value.
Appends all elements matching the given predicate
with indexes to the given destination.
1.0.10
const koconutSet = KoconutSet.of(0,1,2,5,6,7)
const numbersEqualToIndex = new Array<number>()
const origianlData =await koconutSet
.filterIndexedTo(
numbersEqualToIndex,
(eachIndex, eachNumber) => eachIndex == eachNumber
)
.yield()
console.log(numbersEqualToIndex)
// ↑ [ 0, 1, 2 ]
console.log(origianlData)
// ↑ Set { 0, 1, 2, 5, 6, 7 }
Iterable destinaion. Array
or Set
to be exact.
A callback function that accepts two arguments. The method calls the predicate
one time for each index and element in object.
An object to which the this
keyword can refer in the predicate
. If thisArg
is omitted, null
is used as the this
value.
Returns a KoconutSet containing only elements not matching the given predicate
.
1.0.10
const koconutSet = KoconutSet.of(1,2,3,4,5)
const oddNumbers = await koconutSet
.filterNot(eachNumber => eachNumber % 2 == 0)
.yield()
console.log(oddNumbers)
// ↑ Set { 1, 3, 5 }
A callback function that accepts an argument. The method calls the predicate
one time for each element in object.
An object to which the this
keyword can refer in the predicate
. If thisArg
is omitted, null
is used as the this
value.
Returns a KoconutSet containing all elements that are not null
.
1.0.10
const koconutSet = KoconutSet.of(1,2,null,null)
const numbers = await koconutSet
.filterNotNull()
.yield()
console.log(numbers)
// ↑ Set { 1, 2 }
Appends all elements that are not null
to the given destination.
1.0.10
const koconutSet = KoconutSet.of(1,2,null,null)
const numbers = Array<number>()
const originalData = await koconutSet
.filterNotNullTo(numbers)
.yield()
console.log(numbers)
// ↑ [ 1, 2 ]
console.log(originalData)
// ↑ Set { 1, 2, null }
Iterable destinaion. Array
or Set
to be exact.
Appends all elements not matching the given predicate
to the given destination.
1.0.10
const koconutSet = KoconutSet.of(1,2,3,4,5)
const oddNumbers = new Array<number>()
const originalData = await koconutSet
.filterTo(
oddNumbers,
eachNumber => eachNumber % 2 == 0
)
.yield()
console.log(oddNumbers)
// ↑ [ 1, 3, 5 ]
console.log(originalData)
// ↑ Set { 1, 2, 3, 4, 5 }
Iterable destinaion. Array
or Set
to be exact.
A callback function that accepts an argument. The method calls the predicate
one time for each element in object.
An object to which the this
keyword can refer in the predicate
. If thisArg
is omitted, null
is used as the this
value.
Appends all elements matching the given predicate
to the given destination.
1.0.10
const koconutSet = KoconutSet.of(1,2,3,4,5)
const evenNumbers = new Array<number>()
const originalData = await koconutSet
.filterTo(
evenNumbers,
eachNumber => eachNumber % 2 == 0
)
.yield()
console.log(evenNumbers)
// ↑ [ 2, 4 ]
console.log(originalData)
// ↑ Set { 1, 2, 3, 4, 5 }
Iterable destinaion. Array
or Set
to be exact.
A callback function that accepts an argument. The method calls the predicate
one time for each element in object.
An object to which the this
keyword can refer in the predicate
. If thisArg
is omitted, null
is used as the this
value.
Returns a KoconutSet of all elements sorted according to natural sort order
of the value returned by specified selector
function. It could be either a number
, string
, or custom class
that inherits KoconutComparable.
1.0.10
const stringKoconutSet = KoconutSet.of("abcd", "ab", "a", "abc")
const sortedStringByItsLength = await stringKoconutSet
.sortedBy(eachString => eachString.length)
.yield()
console.log(sortedStringByItsLength)
// ↑ Set { 'a', 'ab', 'abc', 'abcd' }
class Person implements KoconutComparable {
name : string
age : number
constructor(name : string, age : number) {
this.name = name
this.age = age
}
compareTo(other : Person) : number {
return this.name.length - other.name.length
}
}
const personKoconutSet = KoconutSet.of(
new Person("Keanu Reeves", 56),
new Person("Robert Downey Jr.", 55),
new Person("Christian Bale", 46)
)
// You can do it by async function.
const sortedPeopleByWhoseAge = await personKoconutSet
.sortedBy(async eachPerson => eachPerson.age)
.yield()
console.log(sortedPeopleByWhoseAge)
// ↑ Set {
// Person { name: 'Christian Bale', age: 46 },
// Person { name: 'Robert Downey Jr.', age: 55 },
// Person { name: 'Keanu Reeves', age: 56 }
// }
// And of course, by returning Promise.
const sortedPeopleByWhoseName = await personKoconutSet
.sortedBy(eachPerson => new Promise(resolve => {
resolve(eachPerson.name)
}))
.yield()
console.log(sortedPeopleByWhoseName)
// ↑ Set {
// Person { name: 'Christian Bale', age: 46 },
// Person { name: 'Keanu Reeves', age: 56 },
// Person { name: 'Robert Downey Jr.', age: 55 }
// }
// The class Person itself implements KoconutComparable.
// So, it is a Comparable Type.
// If you're using JavaScript you can do something similar as following
// by extending KoconutComparable or simply adding method 'compareTo' to your custom class.
const sortedPeople = await personKoconutSet
.sortedBy(eachPerson => eachPerson)
.yield()
console.log(sortedPeople)
// ↑ Set {
// Person { name: 'Keanu Reeves', age: 56 },
// Person { name: 'Christian Bale', age: 46 },
// Person { name: 'Robert Downey Jr.', age: 55 }
// }
A callback function that accepts an argument. The method calls the selector
one time for each element in object.
An object to which the this
keyword can refer in the selector
. If thisArg
is omitted, null
is used as the this
value
Returns a KoconutSet of all elements sorted descending according to natural sort order
of the value returned by specified selector
function. It could be either a number
, string
, or custom class
that inherits KoconutComparable.
1.0.10
const stringKoconutSet = KoconutSet.of("abcd", "ab", "a", "abc")
const descSortedStringByItsLength = await stringKoconutSet
.sortedByDescending(eachString => eachString.length)
.yield()
console.log(descSortedStringByItsLength)
// ↑ Set { 'abcd', 'abc', 'ab', 'a' }
class Person implements KoconutComparable {
name : string
age : number
constructor(name : string, age : number) {
this.name = name
this.age = age
}
compareTo(other : Person) : number {
return this.name.length - other.name.length
}
}
const personKoconutSet = KoconutSet.of(
new Person("Keanu Reeves", 56),
new Person("Robert Downey Jr.", 55),
new Person("Christian Bale", 46)
)
// You can do it by async function.
const descSortedPeopleByWhoseAge = await personKoconutSet
.sortedByDescending(async eachPerson => eachPerson.age)
.yield()
console.log(descSortedPeopleByWhoseAge)
// ↑ Set {
// Person { name: 'Keanu Reeves', age: 56 },
// Person { name: 'Robert Downey Jr.', age: 55 },
// Person { name: 'Christian Bale', age: 46 }
// }
// And of course, by returning Promise.
const descSortedPeopleByWhoseName = await personKoconutSet
.sortedByDescending(eachPerson => new Promise(resolve => {
resolve(eachPerson.name)
}))
.yield()
console.log(descSortedPeopleByWhoseName)
// ↑ Set {
// Person { name: 'Robert Downey Jr.', age: 55 },
// Person { name: 'Keanu Reeves', age: 56 },
// Person { name: 'Christian Bale', age: 46 }
// }
// The class Person itself implements KoconutComparable.
// So, it is a Comparable Type.
// If you're using JavaScript you can do something similar as following
// by extending KoconutComparable or simply adding method 'compareTo' to your custom class.
const descSortedPeople = await personKoconutSet
.sortedByDescending(eachPerson => eachPerson)
.yield()
console.log(descSortedPeople)
// ↑ Set {
// Person { name: 'Robert Downey Jr.', age: 55 },
// Person { name: 'Christian Bale', age: 46 },
// Person { name: 'Keanu Reeves', age: 56 }
// }
A callback function that accepts an argument. The method calls the selector
one time for each element in object.
An object to which the this
keyword can refer in the selector
. If thisArg
is omitted, null
is used as the this
value
Returns a KoconutSet of all elements sorted according to the
specified comparator
.
1.0.10
const koconutSet = KoconutSet.of(15, 4, 33)
const sortedNumbers = await koconutSet
.sortedWith((front, rear) => front - rear)
.yield()
console.log(sortedNumbers)
// ↑ Set { 4, 15, 33 }
const descSortedNumbers = await koconutSet
.sortedWith((front, rear) => rear - front)
.yield()
console.log(descSortedNumbers)
// ↑ Set { 4, 15, 33 }
const sortedNumbersBy1sDigit = await koconutSet
.sortedWith((front, rear) => front % 10 - rear % 10)
.yield()
console.log(sortedNumbersBy1sDigit)
// ↑ Set { 4, 15, 33 }
A callback function that accepts two arguements. The method calls the comparator
to compare two selected values.
In case the result is larger than 0, front is bigger than rear, and if it's less than 0 judge vice versa.
An object to which the this
keyword can refer in the comparator
. If thisArg
is omitted, null
is used as the this
value
Returns a KoconutSet containing first n
elements.
1.0.10
const koconutSet = KoconutSet.of(
1,2,3,4,5,6,7,8,9,10
)
const first3ElementsOfSet = await koconutSet
.take(3)
.yield()
console.log(first3ElementsOfSet)
// ↑ Set { 1, 2, 3 }
Elements number to take.
Returns a KoconutSet containg last n
elements.
1.0.10
const koconutSet = KoconutSet.of(
1,2,3,4,5,6,7,8,9,10
)
const last3ElementsOfSet = await koconutSet
.takeLast(3)
.yield()
console.log(last3ElementsOfSet)
// ↑ Set { 8, 9, 10 }
Elements number to take.
Returns a KoconutSet containing last elements satisfying the given predicate
.
1.0.10
const koconutSet = KoconutSet.of(
1,2,3,4,5,6,7,8,9,10
)
const lastNumbersWhileGreaterThan7 = await koconutSet
.takeLastWhile(eachNumber => eachNumber >7)
.yield()
console.log(lastNumbersWhileGreaterThan7)
// ↑ Set { 8, 9, 10 }
A callback function that accepts an argument. The method calls the predicate
one time for each element in object.
An object to which the this
keyword can refer in the predicate
. If thisArg
is omitted, null
is used as the this
value.
Returns a KoconutSet containing first elements satisfying the given predicate
.
1.0.10
const koconutSet = KoconutSet.of(
1,2,3,4,5,6,7,8,9,10
)
const numbersWhileLessThan5 = await koconutSet
.takeWhile(eachNumber => eachNumber < 5)
.yield()
console.log(numbersWhileLessThan5)
// ↑ Set { 1, 2, 3, 4 }
A callback function that accepts an argument. The method calls the predicate
one time for each element in object.
An object to which the this
keyword can refer in the predicate
. If thisArg
is omitted, null
is used as the this
value.
Processes all the chained objects and calls the specified function
block
with the result value as its argument and returns the original result.
1.0.10
import { KoconutArray } from 'koconut'
const mainProcess = async () => {
const koconutNumbers = KoconutArray.of(1,2,3,4,5)
const moreNumbers = await koconutNumbers
.also(result => {
result.push(6)
result.push(7)
result.push(8)
})
console.log(moreNumbers)
// ↑ [1, 2, 3, 4, 5, 6, 7, 8]
}
mainProcess()
A callback function that accepts an argument.
Processes all the chained objects and calls the specified function
block
with the result value as its argument and returns the final result
of the block
.
1.0.10
import { KoconutArray } from 'koconut'
const mainProcess = async () => {
const koconutNumbers = KoconutArray.of(1,2,3,4,5)
const firstNumberPlus2 = await koconutNumbers
.first()
.let(result => result + 2)
console.log(firstNumber)
// ↑ 3
}
mainProcess()
A callback function that accepts an argument. The method calls the block
and returns its result.
Processes all the chained objects ane returns Promise<void>
.
1.0.10
import { KoconutArray } from 'koconut'
const mainProcess = async () => {
const koconutNumbers = KoconutArray.of(1,2,3,4,5)
await koconutNumbers
.forEach(console.log)
.process()
// ↑ 1 2 3 4 5
}
mainProcess()
Processes all the chained object and returns original KoconutSet instance.
1.0.15
const koconutSet = await KoconutSet
.of(1,2,3,4,5)
.retrieve()
console.log(koconutSet)
// ↑ KoconutSet {
// isValidated: true,
// data: Set { 1, 2, 3, 4, 5 },
// combinedDataWrapper: Set { 1, 2, 3, 4, 5 },
// mSize: 5,
// mIndices: [ 0, 1, 2, 3, 4 ]
// }
Processes all the chained objects and return the result.
1.0.10
import { KoconutArray } from 'koconut'
const mainProcess = async () => {
const koconutNumbers = KoconutArray.of(1,2,3,4,5)
const firstNumber = await koconutNumbers
.first()
.yield()
console.log(firstNumber)
// ↑ 1
}
mainProcess()
Returns an element at the given index
or throws an KoconutIndexOutOfBoundsException if the index
is out of bounds of this collection.
KoconutIndexOutOfBoundsException
-- When index
is less than 0 or greater than lenth.
1.0.10
// Caes 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const elementAtIndex3OfArray = await koconutArray
.elementAt(3)
.yield()
console.log(elementAtIndex3OfArray)
// ↑ 4
try {
await koconutArray
.elementAt(10)
.yield()
} catch(error) {
console.log(error.name)
// ↑ Koconut Index Out Of Bounds Exception
}
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const elementAtIndex2OfSet = await koconutSet
.elementAt(2)
.yield()
console.log(elementAtIndex2OfSet)
// ↑ 3
try {
await koconutSet
.elementAt(-2)
.yield()
} catch(error) {
console.log(error.name)
// ↑ Koconut Index Out Of Bounds Exception
}
The index of element to search for.
Returns an element at the given index
or the result of calling the defaultValue
function
if the index
is out of bounds of this collection.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const elementAtIndex3OfArray = await koconutArray
.elementAtOrElse(3, index => 0)
.yield()
console.log(elementAtIndex3OfArray)
// ↑ 4
const elementAtIndex10OfArray = await koconutArray
.elementAtOrElse(10, index => 0)
.yield()
console.log(elementAtIndex10OfArray)
// ↑ 0
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const elementAtIndex2OfSet = await koconutSet
.elementAtOrElse(2, index => 0)
.yield()
console.log(elementAtIndex2OfSet)
// ↑ 3
const elementAtIndexNegative2OfSet = await koconutSet
.elementAtOrElse(-2, index => 0)
.yield()
console.log(elementAtIndexNegative2OfSet)
// ↑ 0
The index of element to search for.
A callback function that accepts an argument. The method calls the defaultValue
function when index
is out of bounds.
An object to which the this
keyword can refer in the defaultValue
. If thisArg
is omitted, null
is used as the this
value.
Returns an element at the given index
or null
if the index is out of bounds of this collection.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const elementAtIndex3OfArray = await koconutArray
.elementAtOrNull(3)
.yield()
console.log(elementAtIndex3OfArray)
// ↑ 4
const elementAtIndex10OfArray = await koconutArray
.elementAtOrNull(10)
.yield()
console.log(elementAtIndex10OfArray)
// ↑ null
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const elementAtIndex2OfSet = await koconutSet
.elementAtOrNull(2)
.yield()
console.log(elementAtIndex2OfSet)
// ↑ 3
const elementAtIndexNegative2OfSet = await koconutSet
.elementAtOrNull(-2)
.yield()
console.log(elementAtIndexNegative2OfSet)
// ↑ null
The index of element to search for.
Returns the first element matching the given predicate
, or null
if no such element was found.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const foundEventNumberOfArray = await koconutArray
.find(eachNumber => eachNumber % 2 == 0)
.yield()
console.log(foundEventNumberOfArray)
// ↑ 2
const foundMultiplesOf10Array = await koconutArray
.find(eachNumber => eachNumber % 10 == 0)
.yield()
console.log(foundMultiplesOf10Array)
// ↑ null
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const foundOddNumberOfSet = await koconutSet
.find(eachNumber => eachNumber % 2 == 1)
.yield()
console.log(foundOddNumberOfSet)
// ↑ 1
const foundMultiplesOf10OfSet = await koconutSet
.find(eachNumber => eachNumber % 10 == 0)
.yield()
console.log(foundMultiplesOf10OfSet)
// ↑ null
A callback function that accepts an argument. The method calls the predicate
one time for each element in object.
An object to which the this
keyword can refer in the predicate
. If thisArg
is omitted, null
is used as the this
value.
Returns the last element matching the given predicate
, or null
if no such element was found.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const lastEventNumberOfArray = await koconutArray
.findLast(eachNumber => eachNumber % 2 == 0)
.yield()
console.log(lastEventNumberOfArray)
// ↑ 4
const lastMultiplesOf10Array = await koconutArray
.findLast(eachNumber => eachNumber % 10 == 0)
.yield()
console.log(lastMultiplesOf10Array)
// ↑ null
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const lastOddNumberOfSet = await koconutSet
.findLast(eachNumber => eachNumber % 2 == 1)
.yield()
console.log(lastOddNumberOfSet)
// ↑ 5
const lastMultiplesOf10OfSet = await koconutSet
.findLast(eachNumber => eachNumber % 10 == 0)
.yield()
console.log(lastMultiplesOf10OfSet)
// ↑ null
A callback function that accepts an argument. The method calls the predicate
one time for each element in object.
An object to which the this
keyword can refer in the predicate
. If thisArg
is omitted, null
is used as the this
value.
Returns the first element matching the given predicate
. Or, if predicate
is omitted
method will just return the very first element of this collection. If source data is null or no element
matching given predicate
is found, it throws KoconutNoSuchElementException.
KoconutNoSuchElementException
-- When source data is empty or no element matching given predicate
is found.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const firstNumberOfArray = await koconutArray
.first()
.yield()
console.log(firstNumberOfArray)
// ↑ 1
const firstEventNumberOfArray = await koconutArray
.first(eachNumber => eachNumber % 2 == 0)
.yield()
console.log(firstEventNumberOfArray)
// ↑ 2
try {
await koconutArray
.filter(eachNumber => eachNumber > 10)
.first()
.yield()
} catch(error) {
console.log(error.name)
// ↑ Koconut No Such Element Exception
}
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const firstNumberOfSet = await koconutSet
.first()
.yield()
console.log(firstNumberOfSet)
// ↑ 1
const firstOddNumberOfSet = await koconutSet
.first(eachNumber => eachNumber % 2 == 1)
.yield()
console.log(firstOddNumberOfSet)
// ↑ 1
A callback function that accepts an argument. The method calls the predicate
one time for each element in object.
An object to which the this
keyword can refer in the predicate
. If thisArg
is omitted, null
is used as the this
value.
Returns the first element matching the given predicate
. Or, if predicate
is omitted
method will just return the very first element of this collection. If source data is null or no element
matching given predicate
is found, it returns null
.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const firstNumberOfArray = await koconutArray
.firstOrNull()
.yield()
console.log(firstNumberOfArray)
// ↑ 1
const firstEventNumberOfArray = await koconutArray
.firstOrNull(eachNumber => eachNumber % 2 == 0)
.yield()
console.log(firstEventNumberOfArray)
// ↑ 2
const firstNumberOfEmptyArray = await koconutArray
.filter(eachNumber => eachNumber > 10)
.firstOrNull()
.yield()
console.log(firstNumberOfEmptyArray)
// ↑ null
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const firstNumberOfSet = await koconutSet
.firstOrNull()
.yield()
console.log(firstNumberOfSet)
// ↑ 1
const firstOddNumberOfSet = await koconutSet
.firstOrNull(eachNumber => eachNumber % 2 == 1)
.yield()
console.log(firstOddNumberOfSet)
// ↑ 1
A callback function that accepts an argument. The method calls the predicate
one time for each element in object.
An object to which the this
keyword can refer in the predicate
. If thisArg
is omitted, null
is used as the this
value.
Returns first index of element. or -1 if the collection does not contains element.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const indexOf3 = await koconutArray
.indexOf(3)
.yield()
console.log(indexOf3)
// ↑ 2
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const indexOf10 = await koconutSet
.indexOf(10)
.yield()
console.log(indexOf10)
// ↑ -1
The element to search for.
Returns index of the first element matching the given predicate
, or -1 if the
collection does not contain such element.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const indexOfFirstEven = await koconutArray
.indexOfFirst(eachNumber => eachNumber % 2 == 0)
.yield()
console.log(indexOfFirstEven)
// ↑ 1
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const indexOfFirstOdd = await koconutSet
.indexOfFirst(eachNumber => eachNumber % 2 == 1)
.yield()
console.log(indexOfFirstOdd)
// ↑ 0
A callback function that accepts an argument. The method calls the predicate
one time for each element in object.
An object to which the this
keyword can refer in the predicate
. If thisArg
is omitted, null
is used as the this
value.
Returns index of the last element matching the given predicate
, or -1 if the
collection does not contain such element.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const indexOfLastEven = await koconutArray
.indexOfLast(eachNumber => eachNumber % 2 == 0)
.yield()
console.log(indexOfLastEven)
// ↑ 3
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const indexOfLastOdd = await koconutSet
.indexOfLast(eachNumber => eachNumber % 2 == 1)
.yield()
console.log(indexOfLastOdd)
// ↑ 4
A callback function that accepts an argument. The method calls the predicate
one time for each element in object.
An object to which the this
keyword can refer in the predicate
. If thisArg
is omitted, null
is used as the this
value.
Returns a KoconutMap containing key-value paired Entry provided by transform
function applied to elements of the given collection.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const doubledValueMap = await koconutArray
.associate(eachNumber =>
[eachNumber, eachNumber * 2]
// ↑ Also can be
// new Pair(eachNumber, eachNumber * 2)
// Pair.from([eachNumber, eachNumber * 2])
// new KoconutPair(eachNumber, eachNumber * 2)
// new Entry(eachNumber, eachNumber * 2)
// Entry.from([eachNumber, eachNumber * 2])
// new KoconutEntry(eachNumber, eachNumber * 2)
)
.yield()
console.log(doubledValueMap)
// ↑ Map { 1 => 2, 2 => 4, 3 => 6, 4 => 8, 5 => 10 }
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const doubledKeyMap = await koconutSet
.associate(eachNumber => [eachNumber * 2, eachNumber])
.yield()
console.log(doubledKeyMap)
// ↑ Map { 2 => 1, 4 => 2, 6 => 3, 8 => 4, 10 => 5 }
// Case 3 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(1,2,3,4,5)
const squaredValueMap = await koconutArray2
.associate(async eachNumber => [eachNumber, eachNumber * eachNumber])
.yield()
console.log(squaredValueMap)
// ↑ Map { 1 => 1, 2 => 4, 3 => 9, 4 => 16, 5 => 25 }
const squaredKeyMap = await koconutArray2
.associate(async eachNumber => new Promise<[number, number]>(resolve => {
resolve([eachNumber * eachNumber, eachNumber])
}))
.yield()
console.log(squaredKeyMap)
// ↑ Map { 1 => 1, 4 => 2, 9 => 3, 16 => 4, 25 => 5 }
A callback function that accepts an argument. The method calls the transform
one time for each element in object.
An object to which the this
keyword can refer in the transform
. If thisArg
is omitted, null
is used as the this
value.
Returns a KoconutMap containing the elements from the given collection indexed by the key
returned from keySelector
function applied to each element.
valueTransform
callback function is optional. If it's not omitted the method returns
a KoconutMap instance containing the values provide by the function and indexed by keySelector
applied to elements of the given collection.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const doubledKeyMap = await koconutArray
.associateBy(eachNumber => eachNumber * 2)
.yield()
console.log(doubledKeyMap)
// ↑ Map { 2 => 1, 4 => 2, 6 => 3, 8 => 4, 10 => 5 }
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const doubledKeyValueMap = await koconutSet
.associateBy(
eachNumber => eachNumber * 2,
eachNumber => eachNumber * 2
)
.yield()
console.log(doubledKeyValueMap)
// ↑ Map { 2 => 2, 4 => 4, 6 => 6, 8 => 8, 10 => 10 }
// Case 3 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(1,2,3,4,5)
const doubledKeySquaredValueMap = await koconutArray2
.associateBy(
async eachNumber => eachNumber * 2,
eachNumber => new Promise(resolve => {
resolve(eachNumber * eachNumber)
})
)
.yield()
console.log(doubledKeySquaredValueMap)
// ↑ Map { 2 => 1, 4 => 4, 6 => 9, 8 => 16, 10 => 25 }
A callback function that accepts an argument. The method calls the keySelector
one time for each element in object.
A callback function that accepts an argument. The method calls the valueTransform
one time for each element in object it it's not omitted.
An object to which the this
keyword can refer in the keySelector
. If keySelectorThisArg
is omitted, null
is used as the this
value.
An object to which the this
keyword can refer in the valueTransform
. If valueTransformThisArg
is omitted, null
is used as the this
value.
Populates the given destination
map with entries, where key
is provided by
keySelector
function applied to each element.
valueTransform
callback function is optional. If it's omitted, each value of entry
is same as the original data. Otherwise, the value is provided by the valueTransform
function
applied to elements of the given collcetion.
This method has different functionality with Kotlin. It'll return the original collection instance.
1.0.10
const koconutSet = KoconutSet.of(1,2,3,4,5)
const doubledKeyMap = new Map<number, number>()
const stringKeyDoubledValueMap = new Map<string ,number>()
const doubledKeySquaredValueMap = new Map<number, number>()
const originalData = await koconutSet
.associateByTo(
doubledKeyMap,
eachNumber => eachNumber * 2
)
.associateByTo(
stringKeyDoubledValueMap,
async eachNumber => eachNumber.toString(),
async eachNumber => eachNumber * 2
)
.associateByTo(
doubledKeySquaredValueMap,
eachNumber => new Promise(resolve => {
resolve(eachNumber * 2)
}),
eachNumber => new Promise(resolve => {
resolve(eachNumber * eachNumber)
})
)
.yield()
console.log(doubledKeyMap)
// ↑ Map { 2 => 1, 4 => 2, 6 => 3, 8 => 4, 10 => 5 }
console.log(stringKeyDoubledValueMap)
// ↑ Map { '1' => 2, '2' => 4, '3' => 6, '4' => 8, '5' => 10 }
console.log(doubledKeySquaredValueMap)
// ↑ Map { 2 => 1, 4 => 4, 6 => 9, 8 => 16, 10 => 25 }
console.log(originalData)
// ↑ Set { 1, 2, 3, 4, 5 }
Iterable destinaion. Map
to be exact.
A callback function that accepts an argument. The method calls the keySelector
one time for each element in object.
A callback function that accepts an argument. The method calls the valueTransform
one time for each element in object it it's not omitted.
An object to which the this
keyword can refer in the keySelector
. If keySelectorThisArg
is omitted, null
is used as the this
value.
An object to which the this
keyword can refer in the valueTransform
. If valueTransformThisArg
is omitted, null
is used as the this
value.
Populates the given destination
map with entries, provided by transform
function
applied to elements of the given collection
This method has different functionality with Kotlin. It'll return the original collection instance.
1.0.10
const koconutSet = KoconutArray.of(1,2,3,4,5)
const doubledValueMap = new Map<number, number>()
const doubledKeyMap = new Map<number, number>()
const squaredValueMap = new Map<number, number>()
const originalData = await koconutSet
.associateTo(
doubledValueMap,
eachNumber => [eachNumber, eachNumber * 2]
// ↑ Also can be
// new Pair(eachNumber, eachNumber * 2)
// Pair.from([eachNumber, eachNumber * 2])
// new KoconutPair(eachNumber, eachNumber * 2)
// new Entry(eachNumber, eachNumber * 2)
// Entry.from([eachNumber, eachNumber * 2])
// new KoconutEntry(eachNumber, eachNumber * 2)
)
.associateTo(
doubledKeyMap,
async eachNumber => [eachNumber * 2, eachNumber]
)
.associateTo(
squaredValueMap,
eachNumber => new Promise(resolve => {
resolve([eachNumber, eachNumber * eachNumber])
})
)
.yield()
console.log(doubledValueMap)
// ↑ Map { 1 => 2, 2 => 4, 3 => 6, 4 => 8, 5 => 10 }
console.log(doubledKeyMap)
// ↑ Map { 2 => 1, 4 => 2, 6 => 3, 8 => 4, 10 => 5 }
console.log(squaredValueMap)
// ↑ Map { 1 => 1, 2 => 4, 3 => 9, 4 => 16, 5 => 25 }
console.log(originalData)
// ↑ Set { 1, 2, 3, 4, 5 }
Iterable destinaion. Map
to be exact.
A callback function that accepts an argument. The method calls the transform
one time for each element in object.
An object to which the this
keyword can refer in the transform
. If thisArg
is omitted, null
is used as the this
value.
Returns a KoconutMap where keys are original elements of the current object and values
are produced by the valueSelector
function applied to each element.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const doubledValueMap = await koconutArray
.associateWith(eachNumber => eachNumber * 2)
.yield()
console.log(doubledValueMap)
// ↑ Map { 1 => 2, 2 => 4, 3 => 6, 4 => 8, 5 => 10 }
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const stringifiedValueMap = await koconutSet
.associateWith(eachNumber => eachNumber.toString())
.yield()
console.log(stringifiedValueMap)
// ↑ Map { 1 => '1', 2 => '2', 3 => '3', 4 => '4', 5 => '5' }
// Case 3 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(1,2,3,4,5)
const squaredValueMap = await koconutArray2
.associateWith(async eachNumber => eachNumber * 2)
.yield()
console.log(squaredValueMap)
// ↑ Map { 1 => 2, 2 => 4, 3 => 6, 4 => 8, 5 => 10 }
const tripledValueMap = await koconutArray2
.associateWith(eachNumber => new Promise(resolve => {
resolve(eachNumber * 3)
}))
.yield()
console.log(tripledValueMap)
// ↑ Map { 1 => 3, 2 => 6, 3 => 9, 4 => 12, 5 => 15 }
A callback function that accepts an argument. The method calls the valueSelector
one time for each element in object.
An object to which the this
keyword can refer in the valueSelector
. If thisArg
is omitted, null
is used as the this
value.
Populates the given destination
map with entries for each element of the
given collection, where key is the element itslef and value is provided by valueSelector
function
applied to that key.
This method has different functionality with Kotlin. It'll return the original collection instance.
1.0.10
const koconutSet = KoconutSet.of(1,2,3,4,5)
const doubledValueMap = new Map<number, number>()
const stringifiedValueMap = new Map<number, string>()
const squaredValueMap = new Map<number, number>()
const originalData = await koconutSet
.associateWithTo(
doubledValueMap,
eachNumber => eachNumber * 2
)
.associateWithTo(
stringifiedValueMap,
async eachNumber => eachNumber.toString()
)
.associateWithTo(
squaredValueMap,
eachNumber => new Promise(resolve => {
resolve(eachNumber * eachNumber)
})
)
.yield()
console.log(doubledValueMap)
// ↑ Map { 1 => 2, 2 => 4, 3 => 6, 4 => 8, 5 => 10 }
console.log(stringifiedValueMap)
// ↑ Map { 1 => '1', 2 => '2', 3 => '3', 4 => '4', 5 => '5' }
console.log(squaredValueMap)
// ↑ Map { 1 => 1, 2 => 4, 3 => 9, 4 => 16, 5 => 25 }
console.log(originalData)
// ↑ Set { 1, 2, 3, 4, 5 }
Iterable destinaion. Map
to be exact.
A callback function that accepts an argument. The method calls the valueSelector
one time for each element in object.
An object to which the this
keyword can refer in the valueSelector
. If thisArg
is omitted, null
is used as the this
value.
Splits this collection into a KoconutArray of Arrays
each not exceeding the given size
.
KoconutInvalidArgumentException
-- When size
is not greater than 0.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const chunkedArray = await koconutArray
.chunked(3)
.yield()
console.log(chunkedArray)
// ↑ [ [ 1, 2, 3 ], [ 4, 5 ] ]
try {
await koconutArray
.chunked(0)
.yield()
} catch(error) {
console.log(error.name)
// ↑ Koconut Invalid Argument Exception
}
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const chunkedSum = await koconutSet
.chunked(
3,
numbers => numbers
.reduce(
(acc, eachNumber) => acc + eachNumber, 0
)
)
.yield()
console.log(chunkedSum)
// ↑ [ 6, 9 ]
// Case 3 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(1,2,3,4,5)
const chunkedMax = await koconutArray2
.chunked(
2,
async numbers => await KoconutArray
.from(numbers)
.maxByOrNull(
eachNumber => eachNumber
)
.yield()
)
.yield()
console.log(chunkedMax)
// ↑ [ 2, 4, 5 ]
const chunkedMin = await koconutArray2
.chunked(
2,
numbers => KoconutArray
.from(numbers)
.minByOrNull(
eachNumber => eachNumber
)
.yield()
)
.yield()
console.log(chunkedMin)
// ↑ [ 1, 3, 5 ]
The number of elements to take in each Array
, must be positive and can be greater than the number of elements in this collection.
A callback function that accepts an argument. The method calls the transform
with chunked data array
when it's not omitted.
An object to which the this
keyword can refer in the transform
. If thisArg
is omitted, null
is used as the this
value.
Returns a single list of all elements yielded from results of transform
function being invoked on each element of original collection.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of("123", "45")
const allNumberInArray = await koconutArray
.flatMap(eachString => eachString)
// ↑ The string itself can be used as Iterable<string>.
// If you want to make it clear, also possible to type
// as eachString => eachString.split('')
.map(parseInt)
.yield()
console.log(allNumberInArray)
// ↑ [ 1, 2, 3, 4, 5 ]
// Case 2 - KoconutSet
const koconutSet = KoconutSet.of("abc", "de")
const allCharactersInSet = await koconutSet
.flatMap(eachString => eachString)
.yield()
console.log(allCharactersInSet)
// ↑ [ 'a', 'b', 'c', 'd', 'e' ]
// Case 3 -- KoconutMap
const koconutMap = KoconutArray.of(1,2,3,4,5)
.associateWith(eachNumber => eachNumber * 2)
const allKeysAndValuesInMap = await koconutMap
.flatMap(eachEntry => [eachEntry.key, eachEntry.value])
.yield()
console.log(allKeysAndValuesInMap)
// ↑ [1, 2, 2, 4, 3, 6, 4, 8, 5, 10]
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(123, 987)
const allDigitsInArray = await koconutArray2
.flatMap(async eachNumber => {
const digits = new Array<number>()
while(eachNumber != 0) {
digits.unshift(eachNumber % 10)
eachNumber = Math.floor(eachNumber / 10)
}
return digits
})
.yield()
console.log(allDigitsInArray)
// ↑ [ 1, 2, 3, 9, 8, 7 ]
const allNumberCharactersInArray = await koconutArray2
.flatMap(eachNumber => new Promise<string>(resolve => {
resolve(eachNumber.toString())
}))
.yield()
console.log(allNumberCharactersInArray)
// ↑ [ '1', '2', '3', '9', '8', '7' ]
A callback function that accepts an argument. The method calls the transform
one time for each element in object.
An object to which the this
keyword can refer in the transform
. If thisArg
is omitted, null
is used as the this
value.
Returns a KoconutArray of all elements yielded from results of transform
function being invoked on each element of original collection.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(100, 101, 102)
const allNumbersAndIndexOfArray = await koconutArray
.flatMapIndexed((eachIndex, eachNumber) =>
[eachIndex, eachNumber]
)
.yield()
console.log(allNumbersAndIndexOfArray)
// ↑ [ 0, 100, 1, 101, 2, 102 ]
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(100, 101, 102)
const allNumbersAndIndexOfSet = await koconutSet
.flatMapIndexed((eachIndex, eachNumber) =>
[eachIndex, eachNumber]
)
.yield()
console.log(allNumbersAndIndexOfSet)
// ↑ [ 0, 100, 1, 101, 2, 102 ]
// Case 3 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(123, 987)
const allDigitsAndIndexInArray = await koconutArray2
.flatMapIndexed(async (eachIndex, eachNumber) => {
const digits = new Array<number>()
while(eachNumber != 0) {
digits.unshift(eachNumber % 10)
eachNumber = Math.floor(eachNumber / 10)
}
return [eachIndex, ...digits]
})
.yield()
console.log(allDigitsAndIndexInArray)
// ↑ [
// 0, 1, 2, 3,
// 1, 9, 8, 7
// ]
const allNumberAndIndexCharactersInArray = await koconutArray2
.flatMapIndexed((eachInex, eachNumber) => new Promise<string>(resolve => {
resolve(`${eachInex}${eachNumber}`)
}))
.yield()
console.log(allNumberAndIndexCharactersInArray)
// ↑ [
// '0', '1', '2',
// '3', '1', '9',
// '8', '7'
// ]
A callback function that accepts two arguments. The method calls the transform
one time for each index and element in object.
An object to which the this
keyword can refer in the transform
. If thisArg
is omitted, null
is used as the this
value.
Appends all elements yielded from results of transform
function being invoked
on each element and its index in the original collection, to the given destination
.
1.0.10
const koconutSet = KoconutSet.of("123", "456")
const allIndexAndNumbersInSet= new Array<number>()
await koconutSet
.flatMapIndexedTo(
allIndexAndNumbersInSet,
(eachIndex, eachElement) => [
eachIndex,
...eachElement
.split('')
.map(eachCharacter => parseInt(eachCharacter))
]
)
.process()
console.log(allIndexAndNumbersInSet)
// ↑ [ 0, 1, 2, 3, 1, 4, 5, 6 ]
Iterable destinaion. Array
or Set
to be exact.
A callback function that accepts two arguments. The method calls the transform
one time for each index and element in object.
An object to which the this
keyword can refer in the transform
. If thisArg
is omitted, null
is used as the this
value.
Appends all elements yielded from results of transform
function being invoked
on each element of original collection, to the given destination
.
1.0.10
const koconutSet = KoconutSet.of("123", "456")
const allNumbersInSet = new Array<number>()
await koconutSet
.flatMapTo(
allNumbersInSet,
(eachString) => eachString
.split('')
.map(eachCharacter => parseInt(eachCharacter))
)
.process()
console.log(allNumbersInSet)
// ↑ [ 1, 2, 3, 4, 5, 6 ]
Iterable destinaion. Array
or Set
to be exact.
A callback function that accepts an argument. The method calls the transform
one time for each element in object.
An object to which the this
keyword can refer in the transform
. If thisArg
is omitted, null
is used as the this
value.
Groups values returned by the valueTransform
function applied to each element of the original collection
by the key returned by the given keySelector
function applied to the element and returns a map where each
group key is associated with a list of corresponding values. If valueTransform
is omitted, the value
of
each entry would be original element.
1.0.10
// Case 1 -- KoconutArray
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const groupedByOddParity = await koconutArray
.groupBy(eachNumber => eachNumber % 2 == 1)
.yield()
console.log(groupedByOddParity)
// ↑ Map { true => [ 1, 3, 5 ], false => [ 2, 4 ] }
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const groupedByEvenParityToString = await koconutSet
.groupBy(
eachNumber => eachNumber % 2 == 0,
eachNumber => eachNumber.toString()
)
.yield()
console.log(groupedByEvenParityToString)
// ↑ Map { false => [ '1', '3', '5' ], true => [ '2', '4' ] }
A callback function that accepts an argument. The method calls the keySelector
one time for each element in object.
A callback function that accepts an argument. The method calls the valueTransform
one time for each element in object it it's not omitted.
An object to which the this
keyword can refer in the keySelector
. If keySelectorThisArg
is omitted, null
is used as the this
value.
An object to which the this
keyword can refer in the valueTransform
. If valueTransformThisArg
is omitted, null
is used as the this
value.
Groups values returned by the valueTransform
function applied to each element of the original collection by the key
returned by the given keySelector
function applied to the element and puts to the destination map each group key
associated with a list of corresponding values. If valueTransform
is omitted, each value would be original element.
1.0.10
const koconutSet = KoconutSet.of(1,2,3,4,5)
const groupedByOddParity = new Map<boolean, number[]>()
const groupedByEvenParityToString = new Map<boolean, string[]>()
await koconutSet
.groupByTo(
groupedByOddParity,
eachNumber => eachNumber % 2 == 1
)
.groupByTo(
groupedByEvenParityToString,
eachNumber => eachNumber % 2 == 0,
eachNumber => eachNumber.toString()
)
.process()
console.log(groupedByOddParity)
// ↑ Map { true => [ 1, 3, 5 ], false => [ 2, 4 ] }
console.log(groupedByEvenParityToString)
// ↑ Map { false => [ '1', '3', '5' ], true => [ '2', '4' ] }
Iterable destinaion. Map
to be exact.
A callback function that accepts an argument. The method calls the keySelector
one time for each element in object.
A callback function that accepts an argument. The method calls the valueTransform
one time for each element in object it it's not omitted.
An object to which the this
keyword can refer in the keySelector
. If keySelectorThisArg
is omitted, null
is used as the this
value.
An object to which the this
keyword can refer in the valueTransform
. If valueTransformThisArg
is omitted, null
is used as the this
value.
Returns a list containing the results of applying the given transform
function
to each element in the original collection.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const doubledNumbersInArray = await koconutArray
.map(eachNumber => eachNumber * 2)
.yield()
console.log(doubledNumbersInArray)
// ↑ [ 2, 4, 6, 8, 10 ]
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const doubledNumbersInSet = await koconutSet
.map(eachNumber => eachNumber * 2)
.yield()
console.log(doubledNumbersInSet)
// ↑ [ 2, 4, 6, 8, 10 ]
// Case 3 -- KoconutMap
const koconutMap = KoconutArray.of(1,2,3,4,5)
.associate(eachNumber => [eachNumber, eachNumber * 2])
const keyValueSumOfMap = await koconutMap
.map(eachEntry => eachEntry.key + eachEntry.value)
.yield()
console.log(keyValueSumOfMap)
// ↑ [ 3, 6, 9, 12, 15 ]
// Case 4 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(1,2,3,4,5)
const squaredNumberInArray = await koconutArray2
.map(async eachNumber => eachNumber * eachNumber)
.yield()
console.log(squaredNumberInArray)
// ↑ [ 1, 4, 9, 16, 25 ]
const trippledNumbersInArray = await koconutArray2
.map(eachNumber => new Promise(resolve => {
resolve(eachNumber * 3)
}))
.yield()
console.log(trippledNumbersInArray)
// ↑ [ 3, 6, 9, 12, 15 ]
A callback function that accepts an argument. The method calls the transform
one time for each element in object.
An object to which the this
keyword can refer in the transform
. If thisArg
is omitted, null
is used as the this
value.
Returns a list of all elements yielded from results of transform
function being invoked
on each element and its index in the original collection.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const sumsOfIndexesAndNumbers = await koconutArray
.mapIndexed((eachIndex, eachNumber) => eachIndex + eachNumber)
.yield()
console.log(sumsOfIndexesAndNumbers)
// ↑ [ 1, 3, 5, 7, 9 ]
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const productsOfIndexesAndNumbers = await koconutSet
.mapIndexed((eachIndex, eachNumber) => eachIndex * eachNumber)
.yield()
console.log(productsOfIndexesAndNumbers)
// ↑ [ 0, 2, 6, 12, 20 ]
// Case 3 -- You can also do it asynchronously
const koconutArray2 = KoconutArray.of(1,2,3,4,5)
const averagesOfIndexesAndNumbers = await koconutArray2
.mapIndexed(async (eachIndex, eachNumber) => (eachIndex + eachNumber)/2)
.yield()
console.log(averagesOfIndexesAndNumbers)
// ↑ [ 0.5, 1.5, 2.5, 3.5, 4.5 ]
const indexesMinusNumbers = await koconutArray2
.mapIndexed((eachIndex, eachNumber) => new Promise(resolve => {
resolve(eachIndex - eachNumber)
}))
.yield()
console.log(indexesMinusNumbers)
// ↑ [ -1, -1, -1, -1, -1 ]
A callback function that accepts two arguments. The method calls the transform
one time for each index and element in object.
An object to which the this
keyword can refer in the transform
. If thisArg
is omitted, null
is used as the this
value.
Returns a KoconutArray containing only the results that are not null
nor undefined
of applying
the given transform
function to each element and its index in the original collection.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const sumsOfIndexesAndNumbersWhereNumberIsEven = await koconutArray
.mapIndexedNotNull((eachIndex, eachNumber) => {
if(eachNumber % 2 == 0)
return eachIndex + eachNumber
// return
// return null
// return undefined
// ↑ You can use any one of
// them or just omit it.
})
.yield()
console.log(sumsOfIndexesAndNumbersWhereNumberIsEven)
// ↑ [ 3, 7 ]
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of(1,2,3,4,5)
const productsOfIndexesAndNumbersWhereIndexLessThan2 = await koconutSet
.mapIndexedNotNull((eachIndex, eachNumber) => {
if(eachIndex <= 2)
return eachIndex * eachNumber
})
.yield()
console.log(productsOfIndexesAndNumbersWhereIndexLessThan2)
// ↑ [ 0, 2, 6 ]
// Case 3 - You can also do it asynchronously
const koconutArray2 = KoconutArray.of(1,2,3,4,5)
const sumsOfIndexesAndNumbersWhereNumberIsOdd = await koconutArray2
.mapIndexedNotNull(async (eachIndex, eachNumber) => {
if(eachNumber % 2 == 1)
return eachIndex + eachNumber
})
.yield()
console.log(sumsOfIndexesAndNumbersWhereNumberIsOdd)
// ↑ [ 1, 5, 9 ]
const squaredNumbersWhereIndexIsEven = await koconutArray2
.mapIndexedNotNull((eachIndex, eachNumber) => new Promise<number | null>(resolve => {
if(eachIndex % 2 == 0)
resolve(eachNumber * eachNumber)
else resolve(null)
}))
.yield()
console.log(squaredNumbersWhereIndexIsEven)
// ↑ [ 1, 9, 25 ]
A callback function that accepts two arguments. The method calls the transform
one time for each index and element in object.
An object to which the this
keyword can refer in the transform
. If thisArg
is omitted, null
is used as the this
value.
Applies the given transform
function to each element and its index in the original
collection and appends the results that are not null
nor undefined
to the given destination
.
1.0.10
const koconutSet = KoconutSet.of(1,2,3,4,5)
const sumsOfIndexesAndNumbersWhereNumberIsEvent = new Array<number>()
const prodcutsOfIndexesAndNumbersWhereIndexIsOdd = new Set<number>()
const squaredNumbersWhereIndexLessThan3 = new Array<number>()
const origianlData = await koconutSet
.mapIndexedNotNullTo(
sumsOfIndexesAndNumbersWhereNumberIsEvent,
(eachIndex, eachNumber) => {
if(eachNumber % 2 == 0)
return eachIndex + eachNumber
// return
// return null
// return undefined
// ↑ You can use any one of
// them or just omit it.
}
)
.mapIndexedNotNullTo(
prodcutsOfIndexesAndNumbersWhereIndexIsOdd,
async (eachIndex, eachNumber) => {
if(eachIndex % 2 == 1)
return eachIndex * eachNumber
}
)
.mapIndexedNotNullTo(
squaredNumbersWhereIndexLessThan3,
(eachIndex, eachNumber) => new Promise<number | null>(resolve => {
if(eachIndex <= 3)
resolve(eachNumber * eachNumber)
else resolve(null)
})
)
.yield()
console.log(sumsOfIndexesAndNumbersWhereNumberIsEvent)
// ↑ [ 3, 7 ]
console.log(prodcutsOfIndexesAndNumbersWhereIndexIsOdd)
// ↑ Set { 2, 12 }
console.log(squaredNumbersWhereIndexLessThan3)
// ↑ [ 1, 4, 9, 16 ]
console.log(origianlData)
// ↑ Set { 1, 2, 3, 4, 5 }
Iterable destinaion. Array
or Set
to be exact.
A callback function that accepts two arguments. The method calls the transform
one time for each index and element in object.
An object to which the this
keyword can refer in the transform
. If thisArg
is omitted, null
is used as the this
value.
Applies the given transform
function to each element and its index in the original
collection and appends the results to the given destination
.
1.0.10
const koconutSet = KoconutSet.of(1,2,3,4,5)
const sumsOfIndexesAndNumbers = new Array<number>()
const originalData = await koconutSet
.mapIndexedTo(
sumsOfIndexesAndNumbers,
(eachIndex, eachNumber) => eachIndex + eachNumber
)
.yield()
console.log(sumsOfIndexesAndNumbers)
// ↑ [ 1, 3, 5, 7, 9 ]
console.log(originalData)
// ↑ Set { 1, 2, 3, 4, 5 }
Iterable destinaion. Array
or Set
to be exact.
A callback function that accepts two arguments. The method calls the transform
one time for each index and element in object.
An object to which the this
keyword can refer in the transform
. If thisArg
is omitted, null
is used as the this
value.
Returns a list containing results that are not null
nor undefined
of applying
the given transfrom
function to each element in the original collection. You can use this method as filter
then map
.
1.0.10
// Case 1 -- KoconutArray
const koconutArray = KoconutArray.of(1,2,3,4,5)
const squaredOddNumbersInArray = await koconutArray
.mapNotNull(eachNumber => {
if(eachNumber % 2 == 1)
return eachNumber * eachNumber
// return
// return null
// return undefined
// ↑ You can use any one of
// them or just omit it.
})
.yield()
console.log(squaredOddNumbersInArray)
// ↑ [ 1, 9, 25 ]
// Case 2 -- KoconutSet
const koconutSet = KoconutSet.of("1", "54", "26", "5")
const twoDigitsNumbersInSet = await koconutSet
.mapNotNull(eachString => {
if(eachString.length == 2)
return parseInt(eachString)
})
.yield()
console.log(twoDigitsNumbersInSet)
// ↑ [ 54, 26 ]
// Case 3 -- KoconutMap
const KoconutMap = KoconutArray.of(1,2,3,4,5)
.associate(eachNumber => [eachNumber, eachNumber * 2])
const oddKeyKeyValueSumInMap = await KoconutMap
.mapNotNull(eachEntry => {
if(eachEntry.key % 2 == 1)
return eachEntry.key + eachEntry.value
})
.yield()
console.log(oddKeyKeyValueSumInMap)
// ↑ [ 3, 9, 15 ]
// Case 4 -- You can also do it asynchronously
const koocnutArray2 = KoconutArray.of(1,2,3,4,5)
const squaredEvenNumbersInArray = await koocnutArray2
.mapNotNull(async eachNumber => {
if(eachNumber % 2 == 0)
return eachNumber * eachNumber
})
.yield()
console.log(squaredEvenNumbersInArray)
// ↑ [ 4, 16 ]
const doubledOddNumbersInArray = await koocnutArray2
.mapNotNull(eachNumber => new Promise<number | null>(resolve => {
if(eachNumber % 2 == 1)
resolve(eachNumber * 2)
else resolve(null)
}))
.yield()
console.log(doubledOddNumbersInArray)
// ↑ [ 2, 6, 10 ]
A callback function that accepts an argument. The method calls the transform
one time for each element in object.
An object to which the this
keyword can refer in the transform
. If thisArg
is omitted, null
is used as the this
value.
Applies the given transform
function to each element of the original collection
and appends only the results that are not null
nor undefined
.
1.0.10
const koconutSet = KoconutSet.of("1", "12", "34", "5")
const twoDigitsNumbers = Array<number>()
const originalData = await koconutSet
.mapNotNullTo(
twoDigitsNumbers,
eachString => {
if(eachString.length == 2)
return parseInt(eachString)
// return
// return null
// return undefined
// ↑ You can use any one of
// them or just omit it.
}
)
.yield()
console.log(twoDigitsNumbers)
// ↑ [ 12, 34 ]
console.log(originalData)
// ↑ Set { '1', '12', '34', '5' }
Iterable destinaion. Array
or Set
to be exact.
A callback function that accepts an argument. The method calls the transform
one time for each element in object.
An object to which the this
keyword can refer in the transform
. If thisArg
is omitted, null
is used as the this
value.
Applies the given transform
function to each element of the original collection
and appends the results to the given destination
.
1.0.10
const koconutSet = KoconutSet.of(1,2,3,4,5)
const doubledNumbers = new Array<number>()
const originalData = await koconutSet
.mapTo(
doubledNumbers,
eachNumber => eachNumber * 2
)
.yield()
console.log(doubledNumbers)
// ↑ [ 2, 4, 6, 8, 10 ]
console.log(originalData)
// ↑ Set { 1, 2, 3, 4, 5 }
Iterable destinaion. Array
or Set
to be exact.
A callback function that accepts an argument. The method calls the transform
one time for each element in object.
An object to which the this
keyword can refer in the transform
. If thisArg
is omitted, null
is used as the this
value.
Generated using TypeDoc
Creates a new instance from
iterable
object.Since
1.0.10
Example