1

I have an object as below:

var countryobj = {
    "Canada": 10,
    "Peru": 1,
    "Argentina": 5,
    "Colombia": 2,
    "Mexico": 8
};

I want to get the first 3 smallest key value pair so that my output would be:

Peru: 1
Colombia: 2
Argentina: 5
Jack Bashford
  • 43,180
  • 11
  • 50
  • 79
Forged
  • 171
  • 10

2 Answers2

5

Just get the Object.entries and sort them based on their value in ascending order, then print the first three items formatted how you like.

var countryobj = {
 "Canada": 10,
 "Peru": 1,
 "Argentina": 5,
 "Colombia": 2,
 "Mexico": 8
};

const entries = Object.entries(countryobj).sort(([, a], [, b]) => a - b);

for (let i = 0; i < 3; i++) {
  console.log(entries[i][0] + ": " + entries[i][1]);
}
Jack Bashford
  • 43,180
  • 11
  • 50
  • 79
0
function getRange(obj, count) {
  return Object.entries(obj)
    .sort(([, prev], [, next]) => a - b)
    .slice(0, count)
    .reduce(
      (result, [key]) => ({
        ...result,
        [key]: obj[key],
      }),
    {},
  );
}
Alexandr
  • 522
  • 2
  • 10
  • 1
    You could simplify this by rebuilding the object using: `return Object.fromEntries(Object.entries(obj).sort(...).slice(...))` – Nick Parsons Dec 25 '21 at 11:00