Piszę skrypt, aby utworzyć słownik o nazwie Dict, w którym przechowuje częstotliwości niektórych słów, które mam w obszarze tekstowym. Moja tablica wygląda następująco:Jak filtrować słownik według wartości w JavaScript?
var dict = removeArray.reduce(function(p,c) {
if (p[c] === undefined) {
p[c] = 1;
} else {
p[c]++;
}
return p;
}, {});
Chciałbym przefiltrować elementy tego słownika według ich wartości. Potrzebuję utworzyć listę ze słowami, które mają wartość większą niż jeden. Mój słownik wygląda następująco:
{
"92173": 6,
"C": 6,
"GJHGWO.NAYE": 1,
"GJHGX4.NAYE": 1,
"GJHGX6.NAYE": 1,
"GJHGX8.NAYE": 1,
"GJHGXA.NAYE": 1,
"GJHGXC.NAYE": 1,
"RBD": 10,
"RBD3": 2,
"SAMBORNSiPOSSSTHRa": 2,
"SAMBORNSiPOSSSTHRa1": 2,
"SAMBORNSiPOSSSTHRa2": 2,
"X": 4,
"X3": 2
}
W celu osiągnięcia tego Próbowałem za pomocą lodash, co następuje:
var filtered = _.find(dict, function(user) {
return user.frecuency > 1;
});
Ale nie udało mi się, ponieważ mam:
undefined
I don” t wiedzieć, jak używać lodash odpowiednio, aby filtrować tę tablicę.
mój pełny kod wygląda następująco:
var splitWords = document.getElementById("texto").value.split(/[["\|~]/);
var removeArray = _.remove(splitWords, function (word) {
return word !== '' && word !== ' ' && word !== '\n'
});
var dict = removeArray.reduce(function(p,c) {
if (p[c] === undefined) {
p[c] = 1;
} else {
p[c]++;
}
return p;
}, {});
console.log(dict);
var filtered = _.find(dict, function(user) {
return user.frecuency > 1;
});
console.log(filtered)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
<p id="demo"></p>
<textarea cols="150" rows="15" id="texto">
"RBD|X|RBD3|C|92173~GJHGWO.NAYE"
"SAMBORNSiPOSSSTHRa1"
"RBD|X|RBD|C|92173~GJHGX4.NAYE"
"SAMBORNSiPOSSSTHRa"
"RBD|X3|RBD3|C|92173~GJHGX6.NAYE"
"SAMBORNSiPOSSSTHRa1"
"RBD|X|RBD|C|92173~GJHGX8.NAYE"
"SAMBORNSiPOSSSTHRa2"
"RBD|X|RBD|C|92173~GJHGXA.NAYE"
"SAMBORNSiPOSSSTHRa2"
"RBD|X3|RBD|C|92173~GJHGXC.NAYE"
"SAMBORNSiPOSSSTHRa"
</textarea>
underscore.js -> spróbować, może uczynić życie prostszym –