JSON重排

时间:2012-09-07 14:34:16

标签: javascript

我有以下想要重新排列的对象,所以我可以传递给模板。需要帮助才能将其转换为以下格式

var nature = [
  {
    "type": "fruit",
    "name": "apple",
    "color": "red",
  },
  {
    "type": "vegetable",
    "name": "carrot",
    "color": "orange",
  },
  {
    "type": "fruit",
    "name": "grape",
    "color": "green",
  },
  {
    "type": "vegetable",
    "name": "tamato",
    "color": "red",
  },
];

这种格式

var nature = [{
    "fruit": [
        {
            "type": "fruit",
            "name": "apple",
            "color": "red"
        },
        {
            "type": "fruit",
            "name": "grape",
            "color": "green"
        }
    ],
    "vegetable": [
        {
            "type": "vegetable",
            "name": "carrot",
            "color": "orange"
        },
        {
            "type": "vegetable",
            "name": "tomato",
            "color": "red"
        }
    ]
}];

寻找实现它的最快方法。感谢您查看帖子。感谢帮助。

2 个答案:

答案 0 :(得分:1)

打自然!

var goAgainstNature = function(oldNat) {
    var newNat = {}, i;

    for(i = 0; i < oldNat.length; i++) {
        (newNat[oldNat.type] = (newNat[oldNat.type] || [])).push(oldNat[i]);
    }

    return [newNat];
};

答案 1 :(得分:1)

我认为这是对的

var goAgainstNature = function(oldNat) {
    var newNat = {}, i;

    for(i = 0; i < oldNat.length; i++) {
        (newNat["'"+oldNat[i].type+"'"] = (newNat[oldNat.type] || [])).push(oldNat[i]);
    }

    return [newNat];
};