数组映射的格式化输出

Format output of an array map

我正在尝试制作一个计算重复项的函数,这有效但不是我需要的输出格式。 这是我的功能:

    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)

任何帮助都是好的。谢谢!!

您的意思是要将 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)

我假设您需要一组对象。但是 {"CRM", 6} 是不正确的对象语法。该对象应包含键:值对。

使用Object.entiesmap

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);