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