Created
September 22, 2015 13:49
-
-
Save thajo/c769b1ea93a47fb17e8c to your computer and use it in GitHub Desktop.
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
"use strict"; | |
function getHighestValuesInFrequency(frequency) { | |
// frequency är {jacob: 1, mats : 2, johan: 1, john : 2} | |
var keys = Object.keys(frequency); | |
// keys är nu ["jacob", "mats", "johan", "john"] | |
// Sortera så de med högst värde kommer först | |
var sortedKeys = keys.sort(function(a, b) { | |
// använd debuggern för att se vad a, b, frequency[a] och frequency[b] är | |
return frequency[b] - frequency[a]; | |
}); | |
// sortedKeys är nu ["mats", "john", "jacob", "johan"] | |
// Vi är ju bara intresserade av de med högst värde | |
keys = Object.keys(frequency); | |
// keys är nu ["jacob", "mats", "johan", "john"] | |
var highestKeys = keys.filter(function(key) { | |
var highestKey = sortedKeys[0]; // ta den första i den sorterade arrayen så vet vi vad det högsta numret är | |
// jämför varje värde frequency och ser om det är lika med det högsta. | |
// uttrycket nedan returnerar true om aktuellt element ska vara med, returneras false ska det inte vara med | |
// dvs vi sparar bara de "keys" som är aktuella och som vi vill jobba vidare med | |
return frequency[key] === frequency[highestKey]; | |
}); | |
// highestKeys bör nu vara ["mats", "john"], dvs de namn som har högst frekvens i orginalobjektet | |
// frequency => {jacob: 1, mats : 2, johan: 1, john : 2} | |
return highestKeys; | |
} | |
var object = {jacob: 1, mats : 2, johan: 1, john : 2}; // detta objekt har vi redan fått och använder som frekvenstabell | |
var result = getHighestValuesInFrequency(object); | |
console.log(result); | |
// ################## | |
// Samma med for-loop istället för filter | |
function getHighestValuesInFrequencyByLoop(frequency) { | |
// frequency är {jacob: 1, mats : 2, johan: 1, john : 2} | |
var keys = Object.keys(frequency); | |
// keys är nu ["jacob", "mats", "johan", "john"] | |
// Sortera som vanligt så vi kan hitta högsta värdet | |
var sortedKeys = keys.sort(function(a, b) { | |
return frequency[b] - frequency[a]; | |
}); | |
// sortedKeys är nu ["mats", "john", "jacob", "johan"] | |
// Vi är ju bara intresserade av de med högst värde | |
keys = Object.keys(frequency); | |
// keys är nu ["jacob", "mats", "johan", "john"] | |
// keys är en array som vi ska loopa igenom för att kunna få fram de med högst värde i frequency | |
var length = keys.length; | |
// vi skapar en tom array där vi kan sparar de som vi filtrerar ut | |
var highestKeys = []; | |
// Eftersom vi sorterat sorted keys kan vi plocka ut den med högst värder | |
var highestKey = sortedKeys[0]; // ta den första i den sorterade arrayen så vet vi vad det högsta numret är | |
// highestKey är "mats" | |
for(var i = 0; i < length; i += 1) { | |
// Vi plockar ut varje key och jämför | |
var key = sortedKeys[i]; | |
// key är en sträng | |
// Vi använder vår frekvenstabell (objektet frequency) för att slå upp varje namns värde | |
// och jämför med det högsta värdet som vi tagit reda på | |
// om de är lika vet vi att vi ska stoppa in det i arrayen som sparar på keys (namnen) med högsta värde | |
if (frequency[key] === frequency[highestKey]) { | |
highestKeys.push(key); | |
} | |
} | |
// highestKeys bör nu vara ["mats", "john"], dvs de namn som har högst frekvens i orginalobjektet | |
// frequency => {jacob: 1, mats : 2, johan: 1, john : 2} | |
return highestKeys; | |
} | |
var object = {jacob: 1, mats : 2, johan: 1, john : 2}; // detta objekt har vi redan fått och använder som frekvenstabell | |
result = getHighestValuesInFrequencyByLoop(object); | |
console.log(result); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment