【问题标题】:Jquery grouping and getting multiple keys in json object?Jquery分组并在json对象中获取多个键?
【发布时间】:2020-11-09 19:23:52
【问题描述】:

数据来源:

{
    "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"} ]

【问题讨论】:

标签: javascript jquery json object


【解决方案1】:

您可以构建一个包含product_name_en 和product_id 的键用于分组,然后在构建最终结果集时拆分该键,例如:

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

和:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 2018-10-15
    • 1970-01-01
    • 2017-07-24
    • 2019-05-01
    • 1970-01-01
    相关资源
    最近更新 更多