我刚开始对js做出反应,我搜索了google、对象追加、对象连接、浅拷贝、JavaScript中的一个深拷贝,但是,我无法找到将对象数组合并到一个对象数组中的方法。
如何根据类型筛选对象数组,并将响应保存为单个对象数组?
const options = ["Fruit", "Vegitables", "Drinks"];
const mainArray=[{
Type:'Fruit',
Name:'apple',
Amount:'20'
},
{
Type:'Fruit',
Name:'apple',
Amount:'20'
},
{
Type:'Vegitables',
Name:'tomoto',
Amount:'50'
},
{
Type:'Vegitables',
Name:'onion',
Amount:'20'
},
{
Type:'Drinks',
Name:'Milk',
Amount:'30'
},
{
Type:'Drinks',
Name:'Juice',
Amount:'20'
}
]
///Filtering By Type
const filterByType=()=>{
let allMergedData=[];
selectedtypes?.map((type)=>{
let mergedData=[];
let filteredData= mainArray?.filter(x=>x.Type===type.toLowerCase());
mergedData=[...filteredData];
allMergedData=[...mergedData, ...filteredData];
})
return allMergedData;
};
return(
<div>
{options.map((option) => (
<MenuItem key={option} value={name}>
<Checkbox value={option}
onChange={handleChange}
checked={selected.includes(option)} />
<ListItemText primary={option} />
</MenuItem>
))}
</div>
)例外输出:
allMergedData:[{
Type:'Fruit',
Name:'apple',
Amount:'20'
},
{
Type:'Fruit',
Name:'apple',
Amount:'20'
},
{
Type:'Vegitables',
Name:'tomoto',
Amount:'50'
},
{
Type:'Vegitables',
Name:'onion',
Amount:'20'
},]发布于 2022-01-05 17:07:49
这个函数可能会有所帮助,根据您的需要进行编辑:
function groupBy(arr, criteria) {
const newObj = arr.reduce(function (acc, currentValue) {
if (!acc[currentValue[criteria]]) {
acc[currentValue[criteria]] = [];
}
acc[currentValue[criteria]].push(currentValue);
return acc;
}, {});
return newObj;
}在这里测试:
https://stackoverflow.com/questions/70596704
复制相似问题