javascript - 打印文件中的数组数组

标签 javascript arrays multidimensional-array

我有一个这样的数组:

var ex = [{'id': 10, 'name': 'b', 'r': ['bill', 'ben']},
            {'id': 12, 'name': 'c', 'r': ['carl']},
            {'id': 4, 'name': 'a', 'r': ['alan', 'alexander', 'alexis']},
            {'id': 14, 'name': 'z', 'r': []}];

我想以如下格式在文件中打印此数组:

0: 'id': 10, 
   'name': 'b', 
   'r': 
       0: 'bill', 
       1: 'ben',
1: 'id': 12, 
    'name': 'c', 
    'r': 
       0: 'carl',
2: 'id': 4, 
   'name': 'a', 
   'r': 
       0: 'alan', 
       1: 'alexander', 
       2: 'alexis',
3: 'id': 14, 
    'name': 'z', 
    'r': 

重要的是清楚哪些元素包含在哪些元素中。

我该怎么做?

最佳答案

您可以使用递归方法生成嵌套对象的所需输出。

function printObject(obj, prefix = '', space = '\t') {
  // iterate over all keys of the object(array is also an object)
  return Object.keys(obj).map(function(k) {
    // if nested property is object then recursively call the function
    if (typeof obj[k] === 'object')
      return prefix + k + ' : \n' + printObject(obj[k], prefix + space, space);
    // else print the value with the key
    else
      return prefix + k + ' : ' + obj[k];
  // finally join all the values with new line character
  }).join('\n');
}

function printObject(obj, prefix = '', space = '\t') {
  return Object.keys(obj).map(function(k) {
    if (typeof obj[k] === 'object')
      return prefix + k + ' : \n' + printObject(obj[k], prefix + space, space);
    else
      return prefix + k + ' : ' + obj[k];
  }).join('\n');
}



var ex = [{
    'id': 10,
    'name': 'b',
    'r': ['bill', 'ben']
  },
  {
    'id': 12,
    'name': 'c',
    'r': ['carl']
  },
  {
    'id': 4,
    'name': 'a',
    'r': ['alan', 'alexander', 'alexis']
  },
  {
    'id': 14,
    'name': 'z',
    'r': []
  }
];

console.log(printObject(ex))


要获得与您的问题相同的输出:

function printObject(obj, prefix = '', space = '\t') {
  return Object.keys(obj).map(function(k, i) {
    if (typeof obj[k] === 'object')
      return prefix + k + ' : ' + printObject(obj[k], prefix + space, space);
    else
      return (i ? prefix : prefix.replace(space,'')) + k + ' : ' + obj[k];
  }).join('\n');
}



var ex = [{
    'id': 10,
    'name': 'b',
    'r': ['bill', 'ben']
  },
  {
    'id': 12,
    'name': 'c',
    'r': ['carl']
  },
  {
    'id': 4,
    'name': 'a',
    'r': ['alan', 'alexander', 'alexis']
  },
  {
    'id': 14,
    'name': 'z',
    'r': []
  }
];

console.log(printObject(ex))

关于javascript - 打印文件中的数组数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50197645/

相关文章:

arrays - MATLAB:在多维数组中查找值的坐标

JavaScript/jQuery "Gotchas"

javascript - Three.js 曲线路径动画

javascript - Ionic 2/3 类似于 WhatsApp 的信使功能

javascript - 使用 split 来分隔数组中的元素,JavaScript

arrays - MATLAB:多维线性索引

c++ - 分配没有一维的多维数组

javascript - 标签上的 Bootstrap 工具提示不起作用

arrays - 在自定义过滤器中调用 $scope ( Angular )

c++ - 为二维数组动态分配缓冲区空间——为什么会失败?