【问题标题】:How do I traverse an array of objects and find the number of times and element name occurs using Lodash如何使用 Lodash 遍历对象数组并查找出现次数和元素名称
【发布时间】:2022-01-02 23:15:45
【问题描述】:

与我的另一个问题有关,图片是How do I get rid of PROTOTYPE in my new JSON Object from an Array?

我希望能够做到以下几点:

更进一步……

每个现在都相同的 MARKET (name, displayName) 中的每一个都有 1 到“n”个项目。

所以,我想计算有多少项目在其中或重复。

例如:

NAME: "IL" may have 300 
NAME: "WA" may have 1000 
NAME: "OR" may have 100 

and so on.

在这些对象中,有 MARKET 这个词。市场就是上面所说的:IL、WA、CA 等等都是这样的市场:

[
    {
      ID: 1,
      NAME: "SomeName1",
      MARKET: "IL",
      LOCATION: "6 Miles east"
    },
    {
      ID: 2,
      NAME: "SomeName2",
      MARKET: "IL",
      LOCATION: "36 Miles east"
    },
    {
      ID: 3,
      NAME: "SomeName3",
      MARKET: "WA",
      LOCATION: "3 Miles west"
    },
    {
      ID: 4,
      NAME: "SomeName4",
      MARKET: "WA",
      LOCATION: "33 Miles west"
    },
    {
      ID: 5,
      NAME: "SomeName5",
      MARKET: "OR",
      LOCATION: "23 Miles north"
    },
    ...
]

我想为收到的 MAP 函数添加一个计数作为解决方案:

const newObj = newMarketArray.map(e => ({ name: e, displayName: e }));

这样当值如上图所示时,我可以得到例如 WA、IL 和 OR 的出现次数。

最终的 JSON 应该有一个额外的元素:

   displayName: WA,
   name: WA,
   count: 33

最后,我想对 JSON 对象的值进行排序,这可能非常简单。

更新:有人提出了 MAP 的问题

const newObj = newMarketArray.map(e => ({ name: e, displayName: e })); 

是假的。这不是真的。它返回 IMAGE 中的值。所以这肯定不是假的。

我只需要计算实例的数量,比如 CA 出现并像这样放置它:

const newObj = newMarketArray.map(e => ({ name: e, displayName: e, count: somecount }));

仅供参考:newMarketArray 包含 3300 多个对象

【问题讨论】:

    标签: javascript json lodash


    【解决方案1】:

    如果我很清楚你想要什么:

    newMarketArray = [
        {
          ID: 1,
          NAME: "SomeName1",
          MARKET: "IL",
          LOCATION: "6 Miles east"
        },
        {
          ID: 2,
          NAME: "SomeName2",
          MARKET: "IL",
          LOCATION: "36 Miles east"
        },
        {
          ID: 3,
          NAME: "SomeName3",
          MARKET: "WA",
          LOCATION: "3 Miles west"
        },
        {
          ID: 4,
          NAME: "SomeName4",
          MARKET: "WA",
          LOCATION: "33 Miles west"
        },
        {
          ID: 5,
          NAME: "SomeName5",
          MARKET: "OR",
          LOCATION: "23 Miles north"
        }
    ]
    
    let objCount = newMarketArray.reduce((acc, obj) => {
        acc[obj.MARKET] = (acc[obj.MARKET] || 0) + 1;
        return acc;
    }, {});
    console.log(objCount);
    
    let arrResult = Object.keys(objCount).map(k => ({'name': k, 'displayName': k, 'count': objCount[k] }));
    
    console.log(arrResult)

    之后,您可以根据需要对字典进行排序(按您想要的值..)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-14
      • 2016-01-05
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多