首页 > nodejs数组转json对象数组

nodejs数组转json对象数组

我想把一个有规律的数组转成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”
    }
]

用什么方法去做呢?


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


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


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);




简单问题简单做:


var a = [ "3040131111", "小明", "1", "大学体育Ⅰ", "通识课", "2.00", "75", "总评成绩", "2.50", "A16603001A", "32.00", "3040133109", "小明", "1", "基础英语Ⅰ", "通识课", "4.00", "80", "总评成绩", "3.00", "A17001021A", "64.00" ], b = [], i = 0; while(true){ var c = a.slice(i, i += 11);//从数组中取11个元素出来 if(c.length !== 11){//如果没取成功,当元素个数不符合要求时,退出 break; } b.push({//添加至新数据中 "学号": c[0], "姓名": c[1], "学期": c[2], "课程": c[3], "类别": c[4], "学分": c[5], "成绩": c[6], "成绩类型":c[7], "绩点": c[8], "课程彪悍": c[9], "课时": c[10] }); }; console.log(JSON.stringify(b));

结果:

[{"学号":"3040131111","姓名":"小明","学期":"1","课程":"大学体育Ⅰ","类别":"通识课","学分":"2.00","成绩":"75","成绩类型":"总评成绩","绩点":"2.50","课程彪悍":"A16603001A","课时":"32.00"},{"学号":"3040133109","姓名":"小明","学期":"1","课程":"基础英语Ⅰ","类别":"通识课","学分":"4.00","成绩":"80","成绩类型":"总评成绩","绩点":"3.00","课程彪悍":"A17001021A","课时":"64.00"}]

用下 Underscore
代码如下

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