这是我的数组:

[
    ['x', 1],
    ['y', 2],
    ['z', 3],
    ['F', "_180"],
    ['x', 1],
    ['y', 2],
    ['z', 3],
    ['t', 4]
    ['F', "_360"],
    ['x', 1],
    ['y', 2],
    ['z', 3],
    ['t', 4],
    ['m', 5]
    ['F', "_480"],
]


这是我要实现的目标:

[{
    profile_180: {
        x: 1,
        y: 2,
        z: 3
    }
}, {
    profile_360: {
        x: 1,
        y: 2,
        z: 3,
        t: 4
    }
}, {
    profile_480: {
        x: 1,
        y: 2,
        z: 3
        t: 4,
        m: 5
    }
}]


我怎么得到这个?

最佳答案

你可以做到的

var res = [], tmp = {}, obj = {};
x.forEach(function(itm,i) {
 if(itm[0] !== "F"){
  tmp[itm[0]] = itm[1];
 } else {
   obj["profile_" + itm[1]] = tmp;
   res.push(obj);
   tmp = {}, obj ={};
 }
});


其中x是包含arraydata

10-02 00:52