二维数组和json对象的转换

2018-06-30  本文已影响0人  liwuwuzhi
image.png
1. 二维数组 -> json对象

思路:

  1. 吧二维数组除第一个元素和其他元素分开;
  2. 从第二个元素开始遍历二维数组;
    3.遍历时第一个对象,对象的key为二维数组第一个元素的值,value为遍历元素对应的值


方法1:

var source = [
['ID', 'name', 'size', 'parentID'],
['0', '工厂', 13, ''],
['1', '分销站A', 13, '0'],
['2', '分销站B', 13, '0']
];

formatJson(source);

function formatJson(source){
  
  var json = source.slice(1).map(vals => {

      console.log("vals: ", vals)

      var obj = {};
      vals.forEach((val, index) => {
          obj[source[0][index]] = val
      })
      return obj;
  });
  
  return json
  
}


这里的source.slice(1)取到的就是二维数组第一个数组以为的元素,可用console.log("vals: ", vals)打印出来看看。

方法2:

var source = [
    ['ID', 'name', 'size', 'parentID'],
    ['0', '工厂', 13, ''],
    ['1', '分销站A', 13, '0'],
    ['2', '分销站B', 13, '0']
];
convert(source)
 
function formatJson(ary) {

    var result = [];
    var keys = ary[0];

    for (var i = 1; i < ary.length; i++) {

        var obj = {};
        var vals = ary[i];
        for (var j = 0; j < vals.length; j++) {
            obj[keys[j]] = vals[j];
        }
        result.push(obj);
    }

    return result;
}

方法3:

var source = [
    ['ID', 'name', 'size', 'parentID'],
    ['0', '工厂', 13, ''],
    ['1', '分销站A', 13, '0'],
    ['2', '分销站B', 13, '0']
];

var result = source.slice(1).map(vals => vals.reduce((obj, val) => Object.assign(obj, {[source[0][vals.indexOf(val)]]: val}), {})); 

console.log(result)


2. json数组 -> 二维数组
var json = [
    {ID: "0", name: "工厂", size: 13, parentID: ""},
    {ID: "1", name: "分销站A", size: 13, parentID: "0"},
    {ID: "2", name: "分销站B", size: 13, parentID: "0"}
];

formatDoubleDimensional(json);

function formatDoubleDimensional(arr){
  for (var i=0; i<arr.length; i++) {
      var tmpArr = []
      for (var attr in arr[i]) {
          tmpArr.push(arr[i][attr])
      }
      arr[i] = tmpArr
  }
  return arr
};
上一篇 下一篇

猜你喜欢

热点阅读