首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于条件反应JS的对象数组过滤方法

问基于条件反应JS的对象数组过滤方法
EN

Stack Overflow用户
提问于 2022-01-05 17:00:07
回答 1查看 362关注 0票数 0

我刚开始对js做出反应,我搜索了google、对象追加、对象连接、浅拷贝、JavaScript中的一个深拷贝,但是,我无法找到将对象数组合并到一个对象数组中的方法。

如何根据类型筛选对象数组,并将响应保存为单个对象数组?

代码语言: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>
        )

例外输出:

代码语言:javascript
复制
    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'
            },]
代码语言:javascript
复制
EN

回答 1

Stack Overflow用户

发布于 2022-01-05 17:07:49

这个函数可能会有所帮助,根据您的需要进行编辑:

代码语言:javascript
复制
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://jsfiddle.net/pmiranda/y9odgtjm/2/

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

https://stackoverflow.com/questions/70596704

复制
相关文章

相似问题

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