Created
April 4, 2023 23:23
-
-
Save semihkeskindev/1deb39074f67f588d3f287f040354292 to your computer and use it in GitHub Desktop.
"Prioritize Array Items By Another Array Items Ordered" Function
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
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