Javascript 如何搜索嵌套对象并根据字段分组

Javascript 如何搜索嵌套对象并根据字段分组,javascript,node.js,Javascript,Node.js,我有一个包含嵌套对象的数组,我想根据特定字段过滤对象。Items数组包含一个item对象,该对象包含一些特定字段,如name、id、price和vendorid。我想根据vendorid字段对数组进行排序和筛选。例如,一个数组,如: var items=[{item:{name:"cap", id:"5d767e1358ad1d0ca4894592", price:50, vendori

我有一个包含嵌套对象的数组,我想根据特定字段过滤对象。Items数组包含一个item对象,该对象包含一些特定字段,如name、id、price和vendorid。我想根据vendorid字段对数组进行排序和筛选。例如,一个数组,如:

var items=[{item:{name:"cap",
                  id:"5d767e1358ad1d0ca4894592",
                  price:50, 
                  vendorid:"5d72d2a6d87c4628ba60e046"
                 },
            }
            {item:{name:"shorts",
                  price:100,
                  vendorid:"5d71c51f2092d318a1bf8f53"
                 }
            },
            {item:{name:"shoes",
                  price:90,
                  vendorid:"5d71c51f2092d318a1bf8f53"
                  }
            }
            {item:{name:"black hood",
                  price:120,
                  vendorid:"5d71c51f2092d318a1bf8f53"
                  }
            }
           ]

我想创建一个输出以下内容的对象:

results = {"5d71c51f2092d318a1bf8f53":[{name:"shorts"
                                        price:100,
                                     vendorid:"5d71c51f2092d318a1bf8f53"},
                                       {name:"shoes",    
                                        price:90,
                                     vendorid:"5d71c51f2092d318a1bf8f53"},
                                       {name:"black hood",
                                        price:120,
                                     vendorid:"5d71c51f2092d318a1bf8f53"}

                                   ],
           "5d72d2a6d87c4628ba60e046":[{name:"cap",
                                        id:"5d767e1358ad1d0ca4894592",
                                        price:50, 
                                       vendorid:"5d72d2a6d87c4628ba60e046"
                                       }
                                      ]
          }


结果对象格式为
{vendorid:[包含具有相同vendorid的对象的数组]}

非常感谢

您可以使用方法来实现这一点

var items=[{item:{name:{cap],id:{5d767e1358ad1d0ca4894592],价格:50,vendorid:{5d72d2a6d87c4628ba60e046},{item:{name:{shorts],价格:100,vendorid:{5d71c51f2092d318a1bf8f53},{item:{name:“black hood:”价格:90,vendorid“5d71c51f2092d318a1bf8f53”}];
让结果=项目。减少((对象,当前值)=>{
如果(!obj[currentValue.item.vendorid]){
obj[currentValue.item.vendorid]=[];
}
obj[currentValue.item.vendorid]。推送({
…currentValue.item
});
返回obj;
}, {});
常量orderedResult={};
//在vendorid上排序。
Object.keys(result.sort().forEach(key=>orderedResult[key]=result[key]);
log(orderedResult);
您可以使用方法来实现这一点

var items=[{item:{name:{cap],id:{5d767e1358ad1d0ca4894592],价格:50,vendorid:{5d72d2a6d87c4628ba60e046},{item:{name:{shorts],价格:100,vendorid:{5d71c51f2092d318a1bf8f53},{item:{name:{价格:90,vendorid 5D71C51F2093182DABF8F53},{item:{item:{name:{name:“黑罩”,价格:120,vendorid5d71c51f2092d318a1bf8f53“}}];
让结果=项目。减少((对象,当前值)=>{
如果(!obj[currentValue.item.vendorid]){
obj[currentValue.item.vendorid]=[];
}
obj[currentValue.item.vendorid]。推送({
…currentValue.item
});
返回obj;
}, {});
常量orderedResult={};
//在vendorid上排序。
Object.keys(result.sort().forEach(key=>orderedResult[key]=result[key]);
console.log(orderedResult);