nodejs数组转json对象数组

leon0516
  • 57

我想把一个有规律的数组转成json对象的数组呢,如下:
数组

[
    "3040131111",
    "小明",
    "1",
    "大学体育Ⅰ",
    "通识课",
    "2.00",
    "75",
    "总评成绩",
    "2.50",
    "A16603001A",
    "32.00",
    "3040133109",
    "小明",
    "1",
    "基础英语Ⅰ",
    "通识课",
    "4.00",
    "80",
    "总评成绩",
    "3.00",
    "A17001021A",
    "64.00"
]

转成这种

[
    {
        "学号": "3040111111",
        "姓名": "小明",
        "学期": "1",
        "课程": "大学体育Ⅰ",
        "类别": "通识课",
        "学分": "2.00",
        "成绩": "75",
        "成绩类型": "总评成绩",
        "绩点": "2.50",
        "课程彪悍": "A16603001A",
        "课时": “32.00”
    },
    {
        "学号": "3040111111",
        "姓名": "小明",
        "学期": "1",
        "课程": "大学体育Ⅰ",
        "类别": "通识课",
        "学分": "2.00",
        "成绩": "75",
        "成绩类型": "总评成绩",
        "绩点": "2.50",
        "课程彪悍": "A16603001A",
        "课时": “32.00”
    }
]

用什么方法去做呢?

回复
阅读 22.2k
4 个回答
phpfunction array_chunk(input, size, preserve_keys) {

  var x, p = '',
    i = 0,
    c = -1,
    l = input.length || 0,
    n = [];

  if (size < 1) {
    return null;
  }

  if (Object.prototype.toString.call(input) === '[object Array]') {
    if (preserve_keys) {
      while (i < l) {
        (x = i % size) ? n[c][i] = input[i] : n[++c] = {}, n[c][i] = input[i];
        i++;
      }
    } else {
      while (i < l) {
        (x = i % size) ? n[c][x] = input[i] : n[++c] = [input[i]];
        i++;
      }
    }
  } else {
    if (preserve_keys) {
      for (p in input) {
        if (input.hasOwnProperty(p)) {
          (x = i % size) ? n[c][p] = input[p] : n[++c] = {}, n[c][p] = input[p];
          i++;
        }
      }
    } else {
      for (p in input) {
        if (input.hasOwnProperty(p)) {
          (x = i % size) ? n[c][x] = input[p] : n[++c] = [input[p]];
          i++;
        }
      }
    }
  }
  return n;
}
arr = [
    "3040131111",
    "小明",
    "1",
    "大学体育Ⅰ",
    "通识课",
    "2.00",
    "75",
    "总评成绩",
    "2.50",
    "A16603001A",
    "32.00",
    "3040133109",
    "小明",
    "1",
    "基础英语Ⅰ",
    "通识课",
    "4.00",
    "80",
    "总评成绩",
    "3.00",
    "A17001021A",
    "64.00"
];
arr_chunk = array_chunk(arr,11).map(function(i){
return {

        "学号": i[0],
        "姓名": i[1],
        "学期": i[2],
        "课程": i[3],
        "类别": i[4],
        "学分": i[5],
        "成绩": i[6],
        "成绩类型":i[7],
        "绩点": i[8],
        "课程彪悍": i[9],
        "课时": i[10]
}
});
console.log(arr_chunk);



你的key都是一样的,可以存成一个数组,把你的原数据按每11个一取,然后分别按key和value遍历进对象,最后push进结果数组。

用下 Underscore
代码如下

var label = ["学号","姓名","学期","课程","类别","学分","成绩","成绩类型","绩点","课程彪悍","课时"],
    arr = ***;
_.map([_.head(arr), _.tail(arr)], function(arr){
    return _.object(label, arr);
});

顺序要是不变的话就用for循环就可以了

宣传栏