Форматирование вывода карты массива - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь создать функцию, которая считает дубликаты, это работает, но не в том формате вывода, который мне нужен. Это моя функция:

    var duplicateCount = {};
    countryArray.forEach(e => duplicateCount[e] = duplicateCount[e] ? duplicateCount[e] + 1 : 
    1);
     result5 = Object.keys(duplicateCount).map(e => {return {key:e, count:duplicateCount[e]}});
    console.log("result5", result5);

Результат, который я получаю:

    result5 
    (3) [{…}, {…}, {…}]
    0: {e: "CRM", count: 6}
    1: {e: "TSA", count: 8}
    2: {e: "PCS", count: 3}
    length: 3
    __proto__: Array(0)

Мне нужен результат:

    result5 
    (3) [{…}, {…}, {…}]
    0: {"CRM", 6}
    1: {"TSA", 8}
    2: {"PCS", 3}
    length: 3
    __proto__: Array(0)

Любая помощь хороша. Спасибо !!

Ответы [ 3 ]

1 голос
/ 14 июля 2020

Вы имели в виду, что хотите, чтобы свойство e было ключевым? (вместо :)

const data = [
   {e: "CRM", count: 6},
   {e: "TSA", count: 8},
   {e: "PCS", count: 3}
  ]
     

const output1 = data.map(obj => ({[obj.e]:null, [obj.count]:null}))

const output2 = data.map(obj => ({[obj.e]:obj.e, [obj.count]:obj.count}))

const output3 = data.map(obj => ([obj.e, obj.count]))



console.log("output1:",output1, "output2:",output2, "output3:",output3)
0 голосов
/ 14 июля 2020

Используйте Object.enties и map

countryArray = ["foo", "bar", "foo"];
var duplicateCount = {};

countryArray.forEach((e) => (duplicateCount[e] = (duplicateCount[e] ?? 0) + 1));

result5 = Object.entries(duplicateCount).map(([key, value]) => ({
  [key]: value,
}));

console.log("result5", result5);
0 голосов
/ 14 июля 2020

Полагаю, вам нужен массив объектов. Но {"CRM", 6} - неверный синтаксис объекта. Объект должен содержать пары ключ: значение.

...