当前位置: 首页 > 知识库问答 >
问题:

Jquery分组并在json对象中获取多个键?

隗俊誉
2023-03-14

数据源:

{
    "status": 1,
    "data": {
        "tierpricing": [
          { "product_id": "1", "product_name_en": "product 1" },
          { "product_id": "1", "product_name_en": "product 1" },
          { "product_id": "1", "product_name_en": "product 1" },
          { "product_id": "1", "product_name_en": "product 1" },
          { "product_id": "2", "product_name_en": "product 2" },
          { "product_id": "2", "product_name_en": "product 2" },
          { "product_id": "2", "product_name_en": "product 2" },
          { "product_id": "3", "product_name_en": "product 3" },
          { "product_id": "3", "product_name_en": "product 3" },
          { "product_id": "3", "product_name_en": "product 3" }
       ]
    }
}

使用以下方法按产品名称进行分组:

 var tierprice = data.data.tierpricing.reduce(function(result, current) {
    result[current.product_name_en] = result[current.product_name_en] || [];
    result[current.product_name_en].push(current);
    return result;
 }, {});

用这个来获取所有的产品

for (var key of Object.keys(tierprice)) {   
    item = {}
    item ["product_name_en"] = key;
    tierproducts.push(item);
}

console.log(tierproducts);

显示:

[ { product_name_en: "product 1" },
  { product_name_en: "product 2" },
  { product_name_en: "product 3" } ]

我所寻求的是:

[ { product_name_en: "product 1", product_id: "1" },
  { product_name_en: "product 2", product_id: "2" },
  { product_name_en: "product 3", product_id: "3"} ]

共有1个答案

危宜
2023-03-14

您可以生成一个由PRODUCT_NAME_ENPRODUCT_ID组成的用于分组的键,然后在生成最终结果集时拆分该键,例如:

let key = `${current.product_name_en}_${current.product_id}`

和:

let [product_name_en, product_id] = key.split('_');

null

var data = {
    "status": 1,
    "data": {
        "tierpricing": [{
            "product_id": "1",
            "product_name_en": "product 1"
        }, {
            "product_id": "1",
            "product_name_en": "product 1"
        }, {
            "product_id": "1",
            "product_name_en": "product 1"
        }, {
            "product_id": "1",
            "product_name_en": "product 1"
        }, {
            "product_id": "2",
            "product_name_en": "product 2"
        }, {
            "product_id": "2",
            "product_name_en": "product 2"
        }, {
            "product_id": "2",
            "product_name_en": "product 2"
        }, {
            "product_id": "3",
            "product_name_en": "product 3"
        }, {
            "product_id": "3",
            "product_name_en": "product 3"
        }, {
            "product_id": "3",
            "product_name_en": "product 3"
        }]
    }
};

var tierproducts = [];

var tierprice = data.data.tierpricing.reduce(function(result, current) {
  let key = `${current.product_name_en}_${current.product_id}`;
  result[key] = result[key] || [];
  result[key].push(current);
  return result;
}, {});

for (var key of Object.keys(tierprice)) { 
  item = {}
  let [product_name_en, product_id] = key.split('_');
  item ["product_name_en"] = product_name_en;  
  item ["product_id"] = product_id;
  tierproducts.push(item);
} 

console.log(tierproducts);
 类似资料:
  • 问题内容: 我正在寻找遍历JSON数组并显示键和值的方法。 我还看到了使用jQuery在JSON中获取键/值对中键的名称但对于一个简单的活动,它似乎也需要很多代码。 这说明了我在寻找什么(但它不起作用): 没有强制性的jQuery要求,但可以使用。如果它减少了所需的代码,我还可以重组JSON。 问题答案: 您有一个表示JSON序列化JavaScript对象的字符串。您需要先将其反序列化回JavaS

  • 我正在尝试向后端发送一个JSON对象。基本上,我要做的是获得两个文本字段的输入,然后是所有选定文本框的列表。我的javascript代码如下所示: 我还不是javascript方面的专家,但从我在其他Anwer和帖子中发现的情况来看,这是我可以组合起来的,我认为它实际上可以工作。后端部分工作正常,正如我用PostMan测试的那样,非常正常。这就是JSON,我;我是邮递员寄来的,看起来像: Java

  • 问题内容: 我正在使用json对象返回一个结果数组,并且试图使用我的customObjectResponse类拉出每个对象中的每个字段…这是一个对象的问题,所以我该如何编辑我的类为了允许它接受一个对象数组,然后能够调用每个对象的字段…我对需要添加的内容感到困惑: 这是正在使用的响应示例: 这是我的响应对象类: 我正在尝试但不起作用的内容,即使我将这些类分为各自的文件也是如此: 问题答案: 我最终只

  • 我有对象要按文档ID分组。分组后,我想获得它们的“最大值”。这就是我目前掌握的: 文档类: 重要的是,我已经实现了一个compareTo函数。我不确定在< code>groupingBy子句的< code>reducer参数中放什么。我也试过: 但无济于事。

  • 我有一个如下面示例所示的Json主体。我需要从一个键中提取值,该键在数组中有另一个具有特定值的键。我在传递一个JSONode,其中包含消息的细节组件中的所有内容,我可以很容易地从每个级别提取,但是,我在处理数组时遇到了困难。 在本例中,我需要从数组中的对象中提取值“value”(警察/消防/事故报告),该对象具有一个键/值对“name”:“documenttitle”。我知道这是一个JSONArr

  • 问题内容: 使用该包可以很容易地解析如下对象。 我面临的问题是从服务器返回多个命令,如下所示: 无法使用以下代码进行解析。 我正在尝试解析Common Crawl数据(请参阅示例)。 我怎样才能做到这一点? 问题答案: 假设您的输入确实是一系列有效的JSON文档,请使用json.Decoder对其进行解码: 游乐场:https://play.golang.org/p/ANx8MoMC0yq 如果您

  • 我希望在每个数组中获取多个对象,但我的代码显示了单个对象的操作。下面是我的PHP代码,我如何添加另一个循环来获取多个对象 这是显示单个物体的结果

  • 我从服务器收到json格式的响应,方法是使用restAsaud使用java点击post Request。 现在我想获取名为“freebies”的子json对象。如何执行此操作,因为在写入时: 我得到了stackoverFlow错误。 请帮帮忙。