Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 需要根据特定ID对数组进行分类_Javascript_Sorting_Mapping - Fatal编程技术网

Javascript 需要根据特定ID对数组进行分类

Javascript 需要根据特定ID对数组进行分类,javascript,sorting,mapping,Javascript,Sorting,Mapping,您好,我在java脚本中工作&现在我有hotel_id和category_id,需要对值进行排序并按类别求和 let myarray = [ { price: 257, category: 1, hotel_id: 4 }, { price: 493, category: 1, hotel_id: 3 }, { price: 514, category: 1, hotel_id: 3 },

您好,我在java脚本中工作&现在我有hotel_id和category_id,需要对值进行排序并按类别求和

    let myarray = [
  {
    price: 257,
    category: 1,
    hotel_id: 4
  },
  {
    price: 493,
    category: 1,
    hotel_id: 3
  },
  {
    price: 514,
    category: 1,
    hotel_id: 3
  },
  {
    price: 257,
    category: 1,
    hotel_id: 3
  },
{
    price: 104,
    category: 1,
    hotel_id: 3
  },
  {
    price: 295,
    category: 1,
    hotel_id: 3
  },
  {
    price: 125,
    category: 1,
    hotel_id: 2
  },
  {
    price: 125,
    category: 1,
    hotel_id: 2
  },
  {
    price: 157,
    category: 1,
    hotel_id: 2
  },
  {
    price: 125,
    category: 1,
    hotel_id: 2
  },
{
    price: 125,
    category: 1,
    hotel_id: 1
  },

  {
    price: 43,
    category: 1,
    hotel_id: 1
  },
  {
    price: 43,
    category: 2,
    hotel_id: 1
  },
  {
    price: 43,
    category: 2,
    hotel_id: 1
  }
];

var hotel_to_values = myarray.reduce(function (obj, item) {
    obj[item.hotel_id] = obj[item.hotel_id] || [];
    obj[item.hotel_id].push(item.category);
    return obj;
}, {});

var hotels = Object.keys(hotel_to_values).map(function (key) {
    return {hotel_id: key, category: hotel_to_values[key]};
});
我需要像这样分类或分组

  • 1号酒店
    • 第一类
      • 价格20
    • 第2类
      • 价格20,价格30
现在我的结果是

[
    {
        "hotel_id": "1",
        "category": [
            1,
            1,
            2,
            2
        ]
    },
    {
        "hotel_id": "2",
        "category": [
            1,
            1,
            1,
            1
        ]
    },
    {
        "hotel_id": "3",
        "category": [
            1,
            1,
            1,
            1,
            1
        ]
    },
    {
        "hotel_id": "4",
        "category": [
            1
        ]
    }
]
我需要在类别内的价格

我现在更新我的代码。你可以检查我实际在做什么。是的,我使用了reduce方法,但无法获得实际结果。

在你的
reduce()
中,你没有细分每个类别。我不能100%确定
类别所需的输出,下面使用一个具有每个唯一值的对象作为键和每个类别的价格数组

var hotel_to_values=myarray.reduce(函数(obj,项){
const o=obj[item.hotel_id]=obj[item.hotel_id]|{};
o[item.category]=(o[item.category]| |[]).concat(item.price);
返回obj;
}, {});
var hotels=Object.key(hotel_到_值).map(function(key){
返回{hotel_id:key,category:hotel_to_values[key]};
});
console.log(酒店)
。作为控制台包装{最大高度:100%!重要;}

设myarray=[{
价格:257,
类别:1,,
酒店id:4
},
{
价格:493,
类别:1,,
酒店id:3
},
{
价格:514,
类别:1,,
酒店id:3
},
{
价格:257,
类别:1,,
酒店id:3
},
{
价格:104,
类别:1,,
酒店id:3
},
{
价格:295,
类别:1,,
酒店id:3
},
{
价格:125,
类别:1,,
酒店id:2
},
{
价格:125,
类别:1,,
酒店id:2
},
{
价格:157,
类别:1,,
酒店id:2
},
{
价格:125,
类别:1,,
酒店id:2
},
{
价格:125,
类别:1,,
酒店id:1
},
{
价格:43,
类别:1,,
酒店id:1
},
{
价格:43,
类别:2,
酒店id:1
},
{
价格:43,
类别:2,
酒店id:1
}
];

查看javascript reduce函数,请发布更清晰的预期输出。@user184994现在您可以看到我的代码是的,我使用reduce函数,但我有一个问题,我只能处理酒店而不能categories@ZaheerAhmad你也可以用这种格式发布预期的输出吗?@charlietfl谢谢你的指导方针我添加了我的代码和排练。现在请检查&是的,我也找到了小组,但无法找到好的结果。如果您知道一些事情,请告诉我:)我需要相同的输出,谢谢这两件事:)charlietflI从新对象中删除了
categories
属性,并且使用更少的代码也可以使用相同的输出