Как сгруппировать массив динамических объектов на основе значения свойства a в react js / javascript

#javascript #arrays #json #reactjs #object

#javascript #массивы #json #reactjs #объект

Вопрос:

У меня есть такой объект —

 [{"genericName":"genesName test","genericId":3,"code":"generics"},{"genericName":"genesName fhfghsd","genericId":8,"code":"generics"},{"genericName":"genesName fhld","genericId":11,"code":"generics"}]
  

Я хочу сделать это так —

 {"generics": {"genericId": 3}},
{"generics": {"genericId": 8}},
{"generics": {"genericId": 11}}
  

Как я могу это сделать?

Комментарии:

1. Вы имеете в виду группировать их так? { "generics": [3, 8, 11] } Вопрос кажется немного расплывчатым.

2. @srx, это будет так же, как показано ниже: (

3. здесь часть generics является статической, я могу изменить объект с помощью — [{«GenericName»:»genesName test», «genericId»:3″}, {«GenericName»:»genesName fhfghsd», «genericId»:8}, {«GenericName»:»genesName fhld», «genericId»:11}]

Ответ №1:

Использование map и деструктурирование

 const data = [
  { genericName: "genesName test", genericId: 3, code: "generics" },
  { genericName: "genesName fhfghsd", genericId: 8, code: "generics" },
  { genericName: "genesName fhld", genericId: 11, code: "generics" },
];

const res = data.map(({ code, genericId }) => ({ [code]: { genericId } }));

console.log(res);  

Ответ №2:

Вы можете попробовать map метод Array :

 const obj = [{
  "genericName": "genesName test",
  "genericId": 3,
  "code": "generics"
}, {
  "genericName": "genesName fhfghsd",
  "genericId": 8,
  "code": "generics"
}, {
  "genericName": "genesName fhld",
  "genericId": 11,
  "code": "generics"
}]

const mapObjToResult = (item, idx, arr) => {
  return {
    [item.code]: {
      genericId: item.genericId
    }
  }
}

const result = obj.map(mapObjToResult);

console.log(result);  

Удачи…

Ответ №3:

Если вы хотите иметь массивы объектов, то этот?

 let gens = [
  {"genericName":"genesName test","genericId":3,"code":"generics"},
  {"genericName":"genesName fhfghsd","genericId":8,"code":"generics"},
  {"genericName":"genesName fhld","genericId":11,"code":"generics"}
]

result = gens.map(item => ({ [item.code] : {genericId: item.genericId}})