Объекты внутри массива, как решить эту проблему? - PullRequest
2 голосов
/ 21 марта 2019

Мой вопрос: как я могу получить доступ к каждому объекту внутри массива?или, может быть, как мне решить эту проблему?Как я знаю в голове, я должен сравнить категории, а затем вставить в новый константный массив этой категории.До сих пор я записывал каждый объект в массиве, но мне нужно сделать метод push после того, как категория одинакова, а также после этого, чтобы склеить категорию из каждого объекта.

Мое решение до сих пор:

export const convert = inside => {
inside(({id,name,category}) => {
outside[category].push({id,name});
});
console.log(outside);
return outside;
}

Извините за испорченный код, не удалось загрузить здесь.

Ответы [ 2 ]

1 голос
/ 21 марта 2019

Вы можете взять category в качестве ключа для объекта и нажать новый объект.

Нет необходимости в массиве для каждой категории, поскольку этот подход использует объект результата с динамическими ключами.

const
    inside = [{ id: 1, name: "orange", category: "fruits" }, { id: 2, name: "apple", category: "fruits" }, { id: 3, name: "carrot", category: "vegetable" }],
    outside = {};
    
inside.forEach(({ id, name, category }) => {
    outside[category] = outside[category] || [];
    outside[category].push({ id, name });
});

console.log(outside);
.as-console-wrapper { max-height: 100% !important; top: 0; }
0 голосов
/ 21 марта 2019

Я не совсем уверен, что понимаю вопрос, но из того, что я считаю необходимым, вы хотите взять все элементы из константы outside и взять их соответствующие category, применить их к объекту питания и затем добавьте этот объект в переменную inside.

const outside = {
  fruits: [{
    id: 1,
    name: "orange"
  }, {
    id: 2,
    name: "apple"
  }],
  vegetable: [{
    id: 3,
    name: "carrot"
  }]
}
const categories = Object.keys(outside)

let inside = []

categories.forEach(category => {
  const categorizedFood = outside[category].map(f => ({...f, category }) )
  
  inside = [...inside, ...categorizedFood]
})

console.log(inside)
.as-console-wrapper {
  background: #FFF; 
  filter: invert(1) hue-rotate(210deg);
}
...