首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要按产品分组JSON数组。以逗号分隔的产品显示

需要按产品分组JSON数组。以逗号分隔的产品显示
EN

Stack Overflow用户
提问于 2022-10-25 17:13:59
回答 2查看 37关注 0票数 2

我是新来的,我正在使用Javascript中的JSON数组

所以我需要按他们分配的产品分类“名称”

代码语言:javascript
复制
[
   {
      "Name":"Marcelo Rocha",
      "Product_Line__c":"SAP",
      "Role":"Regional Manager, SAP Support Delivery, LATAM"
   },
   {
      "Name":"Marcelo Rocha",
      "Product_Line__c":"Business Objects",
      "Role":"Regional Manager, SAP Support Delivery, LATAM"
   },
   {
      "Name":"Marcelo Rocha",
      "Product_Line__c":"Oracle Technology",
      "Role":"Regional Manager, SAP Support Delivery, LATAM"
   },
   {
      "Name":"Leonardo Gracioli",
      "Product_Line__c":"SAP",
      "Role":"Senior Support Engineer, SAP"
   },
   {
      "Name":"Leonardo Gracioli",
      "Product_Line__c":"Business Objects",
      "Role":"Senior Support Engineer, SAP"
   },
   {
      "Name":"Leonardo Gracioli",
      "Product_Line__c":"Oracle Technology",
      "Role":"Senior Support Engineer, SAP"
   },
   {
      "Name":"Adriane Yonamine",
      "Product_Line__c":"SAP",
      "Role":"SAP Consultant"
   }
]

将ProductLime的“名称”组合成如下所示:

代码语言:javascript
复制
[
   {
      "Name":"Marcelo Rocha",
      "Product_Line__c":"SAP,Business Objects,Oracle Technology",
      "Role":"Regional Manager, SAP Support Delivery, LATAM"
   },
   {
      "Name":"Leonardo Gracioli",
      "Product_Line__c":"SAP,Business Objects,Oracle Technology",
      "Role":"Senior Support Engineer, SAP"
   },
   {
      "Name":"Adriane Yonamine",
      "Product_Line__c":"SAP",
      "Role":"SAP Consultant"
   }
]

谁能知道更简单的方法吗?

EN

回答 2

Stack Overflow用户

发布于 2022-10-25 21:49:28

代码语言:javascript
复制
function sortUsers(Role, arr) {
  let result = [];
  arr.filter(person => person.Product_Line__c === Role).forEach(person => {
     result.push({ Name: person.Name, Product_Line__c: arr.filter(obj => obj.Name === person.Name).map(obj => obj.Product_Line__c).join(','), Role: person.Role}) 
  });
  return result;
}

const arr = [
   {
      "Name":"Marcelo Rocha",
      "Product_Line__c":"SAP",
      "Role":"Regional Manager, SAP Support Delivery, LATAM"
   },
   {
      "Name":"Marcelo Rocha",
      "Product_Line__c":"Business Objects",
      "Role":"Regional Manager, SAP Support Delivery, LATAM"
   },
   {
      "Name":"Marcelo Rocha",
      "Product_Line__c":"Oracle Technology",
      "Role":"Regional Manager, SAP Support Delivery, LATAM"
   },
   {
      "Name":"Leonardo Gracioli",
      "Product_Line__c":"SAP",
      "Role":"Senior Support Engineer, SAP"
   },
   {
      "Name":"Leonardo Gracioli",
      "Product_Line__c":"Business Objects",
      "Role":"Senior Support Engineer, SAP"
   },
   {
      "Name":"Leonardo Gracioli",
      "Product_Line__c":"Oracle Technology",
      "Role":"Senior Support Engineer, SAP"
   },
   {
      "Name":"Adriane Yonamine",
      "Product_Line__c":"SAP",
      "Role":"SAP Consultant"
   }
];

console.log(sortUsers("SAP", arr));

票数 1
EN

Stack Overflow用户

发布于 2022-10-25 21:59:57

我喜欢@Haim的回答,因为它非常优雅,但它似乎也依赖于包含"SAP“( sortUsers()的角色参数)这个词的sortUsers()

我有一个更详细,不那么优雅的代码来解释发生了什么。

更新:添加最后排序

代码语言:javascript
复制
const arr = [{
    "Name": "Marcelo Rocha",
    "Product_Line__c": "SAP",
    "Role": "Regional Manager, SAP Support Delivery, LATAM"
  },
  {
    "Name": "Marcelo Rocha",
    "Product_Line__c": "Business Objects",
    "Role": "Regional Manager, SAP Support Delivery, LATAM"
  },
  {
    "Name": "Marcelo Rocha",
    "Product_Line__c": "Oracle Technology",
    "Role": "Regional Manager, SAP Support Delivery, LATAM"
  },
  {
    "Name": "Leonardo Gracioli",
    "Product_Line__c": "SAP",
    "Role": "Senior Support Engineer, SAP"
  },
  {
    "Name": "Leonardo Gracioli",
    "Product_Line__c": "Business Objects",
    "Role": "Senior Support Engineer, SAP"
  },
  {
    "Name": "Leonardo Gracioli",
    "Product_Line__c": "Oracle Technology",
    "Role": "Senior Support Engineer, SAP"
  },
  {
    "Name": "Adriane Yonamine",
    "Product_Line__c": "SAP",
    "Role": "SAP Consultant"
  }
];

// new home for results
let combinedResults = [];

// Obtain an arrayOfUniqueNames
var arrayOfUniqueNames = [...new Set(arr.map(x => x.Name))];

// Iterate through the list
arrayOfUniqueNames.forEach(name => {

  // filter through the source array 
  // to get an arrayOfObjectsForThisName
  let arrayOfObjectsForThisName = arr.filter((obj) => obj.Name === name);

  // Create a productLinesCSVForThisName
  let productLinesCSVForThisName = arrayOfObjectsForThisName.map(el => el.Product_Line__c).join();

  // Clone the first object in the source array and replace
  // property Product_Line__c with productLinesCSVForThisName
  let aSourceObjToClone = arr.find(o => o.Name === name);
  let aClonedSOurceObject = Object.assign({}, aSourceObjToClone);
  aClonedSOurceObject.Product_Line__c = productLinesCSVForThisName;

  // Push the newly created object into the combinedResults array
  combinedResults.push(aClonedSOurceObject);
});

console.log(combinedResults.sort((a, b) => {
  // Sort By Product Line only
  return a.Product_Line__c.localeCompare(b.Product_Line__c);

  /* Or Sort by Product then Name
  let value =  a.Product_Line__c.localeCompare(b.Product_Line__c);
  
  if( value === 0 ) 
    value = a.Name.localeCompare( b.Name);
    
  return value;
  */
}));

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74197872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档