产品类别按类别排列

问题描述

我正在尝试按类别排列这一系列产品。现在,我得到了每个类别的计数,但是我不知道如何制作此二维数组的输出。

let products = [
  {name: 'Tequila',category: 'drink'},{name: 'Beer',{name: 'Burger',category: 'food'},{name: 'Shawarma',{name: 'Wine',{name: 'Gelatto',category: 'dessert'}
];

/*expected ouput

let arranged = [[
  {name: 'Tequila',category: 'drink'}
],[
  {name: 'Burger',category: 'food'}
],[
  {name: 'Gelatto',category: 'dessert'}
]];

*/

这是我现在的代码:

let products = [
  {name: 'Tequila',category: 'dessert'}
];

let arranged = {};

products.map(x => arranged[x.category] = 1 + (arranged[x.category] || 0));

console.log(arranged);

解决方法

尝试一下。我正在使用Interoperating with the ABI's GUID struct通过类别键将数组中的对象分组,然后可以使用Object.values()

获取所需的数据。

let products = [{
    name: 'Tequila',category: 'drink'
  },{
    name: 'Beer',{
    name: 'Burger',category: 'food'
  },{
    name: 'Shawarma',{
    name: 'Wine',{
    name: 'Gelatto',category: 'dessert'
  }
];



let group = products.reduce((r,a) => {


  r[a.category] = [...r[a.category] || [],a];
  return r;
},{});
console.log(Object.values(group));

,

您可以通过使用对象存储属于每个类别的元素来缩小数组来对元素进行分组。要获取分组的类别,我们可以使用Object.values

let products = [{name: 'Tequila',category: 'drink'},{name: 'Beer',{name: 'Burger',category: 'food'},{name: 'Shawarma',{name: 'Wine',{name: 'Gelatto',category: 'dessert'}];
const res = Object.values(
  products.reduce((acc,curr)=>(
    (acc[curr.category] = acc[curr.category] || []).push(curr),acc
  ),{})
);
console.log(res);

,

我使用reducer遍历数组。为了建立组,我使用索引数组存储类别。在添加新项目之前,我先看一下此数组中是否存在类别。如果是这样,我将获取索引,然后将该项目添加到第index组。否则,我将创建一个新的grup数组,将其添加到其中。

modalImg = $('<img />').on('load',function(){
  console.log(this.naturalWidth); // output: 429
      if(this.complete && this.naturalWidth != 0){
        console.log($(this).width(),$(this).height()); // output: 0 0
      }
   }).attr('src','kid2.png'); 

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...