我有一个这样的数组:
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 :(得分:1)
您可以使用递归方法生成嵌套对象的所需输出。
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))