数组中的对象如何解决此问题?

时间:2019-03-21 13:23:24

标签: javascript object arr

  

我的问题是,如何访问数组中的每个对象?要么   也许,我应该如何解决这个问题?就像我脑子里知道的那样   我必须比较类别,然后推入新的const数组,   类别。到目前为止,我把数组中的每个对象都写下来了,但是我需要   在类别相同后执行推送方法,然后在   从每个对象拼接类别。

     

到目前为止,我的解决方案是

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

对不起,代码混乱,无法在此处加载。

2 个答案:

答案 0 :(得分:1)

您可以将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; }

答案 1 :(得分:0)

我不确定我是否完全理解这个问题,但是根据我的需要,您想从outside常量中取出所有项目,并取其各自的category,将其应用于food对象,然后将该对象添加到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);
}