-1

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

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"
        }
    ]
}];

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

4

2 回答 2

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];
};
于 2012-09-07T14:41:07.413 回答
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];
};
于 2012-09-07T14:59:27.463 回答