首页 > 解决方案 > 通过对对象键的数组进行排序来创建新对象

问题描述

我有一个由项目组成的对象数组:

[
  {
    CATEGORY:"Fruits"
    ITEM_AVAIL:true
    ITEM_NAME:"Apple"
    ITEM_PRICE:100
    ITEM_UNIT:"per_kg"
    ITEM_UPDATED:Object
    ORDER_COUNT:0

  },
  {
    CATEGORY:"Vegetables"
    ITEM_AVAIL:true
    ITEM_NAME:"Aloo"
    ITEM_PRICE:1000
    ITEM_UNIT:"per_kg"
    ITEM_UPDATED:Object
    ORDER_COUNT:0

  }
]

我想创建一个新对象,使得对象的每个键都是一个类别并保存项目对象数组,例如:

{
  Fruits: [
    {
    CATEGORY:"Fruits"
    ITEM_AVAIL:true
    ITEM_NAME:"Apple"
    ITEM_PRICE:100
    ITEM_UNIT:"per_kg"
    ITEM_UPDATED:Object
    ORDER_COUNT:0
    },
    //more fruits
    ]
  Vegetables: [
    {
    CATEGORY:"Vegetables"
    ITEM_AVAIL:true
    ITEM_NAME:"Aloo"
    ITEM_PRICE:1000
    ITEM_UNIT:"per_kg"
    ITEM_UPDATED:Object
    ORDER_COUNT:0
    },
    //more vegetables
    ]
}

新对象将根据项目类别创建。

标签: javascriptarraysjsonobject

解决方案


您可以像这样创建新对象

var data = [
      {
        CATEGORY:"Fruits",
        ITEM_AVAIL:true,
        ITEM_NAME:"Apple",
        ITEM_PRICE:100,
        ITEM_UNIT:"per_kg",
        ITEM_UPDATED:Object,
        ORDER_COUNT:0,

      },
      {
        CATEGORY:"Vegetables",
        ITEM_AVAIL:true,
        ITEM_NAME:"Aloo",
        ITEM_PRICE:1000,
        ITEM_UNIT:"per_kg",
        ITEM_UPDATED:Object,
        ORDER_COUNT:0,

      }
    ];
var newobj = [];
for (i in data){        
    newobj[i] = [];
    newobj[i][data[i].CATEGORY] = data[i];
}       
console.log(newobj);


推荐阅读