Skip to content

Instantly share code, notes, and snippets.

@semihkeskindev
Created April 4, 2023 23:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save semihkeskindev/1deb39074f67f588d3f287f040354292 to your computer and use it in GitHub Desktop.
Save semihkeskindev/1deb39074f67f588d3f287f040354292 to your computer and use it in GitHub Desktop.
"Prioritize Array Items By Another Array Items Ordered" Function
/**
birinci parametrede array alıyoruz ve array içerisinde string, integer tipinde veriler var
ve bunun içindeki bazı veri kümsenin sırasını önceliklendirmek istiyoruz.
Hangi veri kümsenin önceliklendirileceğini de ikinci parametrede alıyoruz.
İkinci parametre de array olacak. birebir birinci parametreyle aynı özelliklere sahip olacak.
ikinci parametrede array içerisindeki veriler, birinci parametredekiler verilerde birebir match arayarak
ikinci parametrenin index sıralamasına göre birebir aynı şekilde önceliklendirerek
birinci parametrenin sıralamasını güncelleyecek ve return edecek.
Test için aşağıdaki iki değişkeni tarayıcı konsolunda tanımlayıp functionu çalıştırabilirsiniz.
var orderedArray = ["153.03.08.2731", "180.01.01.0040", "153.03.06.6206" , "700.01.01.0272", "153.01.06.5182"]
var array = ["153.03.06.6206" , "500.01.21.0034", "180.01.01.0040", "153.01.06.5182", "500.01.21.0035", "700.01.01.0272", "153.03.08.2731"]
*/
function prioritizeArrayItemsByAnotherArrayItemsOrdered(
array: Array<any>,
orderedArray: Array<any>,
orderedArrayFindIndexCallback: (item: any, searchData: any) => boolean = (item, searchData) =>
item === searchData
) {
return array.sort(function (a, b) {
let indexA = orderedArray.findIndex((item: any) => orderedArrayFindIndexCallback(item, a))
let indexB = orderedArray.findIndex((item: any) => orderedArrayFindIndexCallback(item, b))
let returnData = 0
if (indexA === -1) {
return 1
}
if (indexB === -1) {
return -1
}
if (indexA === -1 && indexB === -1) {
return 0
}
if (indexA < indexB) {
return -1
}
if (indexA > indexB) {
return 1
}
return returnData
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment