js不限层级数组转化为复杂的嵌套对象
将数组 [{'a': 1}, {'a': 2}, {'a': 3}] 转换成对象 {a: 1, info: {a: 2, info: {a: 3}}} 的形式,可以通过递归函数来实现:
数组格式[{a:1},{a:2},{a:3}],要拼接成这样的obj={a:1,info:{a:2,info:{a:3}}}
function arrayToObject(arr) {
if (arr.length === 0) {
return null; // 或者根据需求返回其他值,比如 {}
}
let obj = arr.shift(); // 移除数组的第一个元素并返回该元素
if (arr.length > 0) {
obj.info = arrayToObject(arr); // 递归处理剩余的数组元素
}
return obj;
}
let arr = [{'a': 1}, {'a': 2}, {'a': 3}];
let result = arrayToObject(arr);
console.log(result);
js不限层级复杂的对象嵌套转化成为数组
一个嵌套对象 {a: 1, info: {a: 2, info: {a: 3}}} 转换为数组 [{'a': 1}, {'a': 2}, {'a': 3}],同样可以使用递归函数来遍历对象并将每一层的 a 属性值收集到数组中:
对象格式{a:1,info:{a:2,info:{a:3}}},要拼接成这样的ary=[{a:1},{a:2},{a:3}]
function objectToArray(obj, arr = []) {
if (obj !== null && typeof obj === 'object') {
arr.push({ a: obj.a }); // 添加当前对象的'a'属性到数组
if ('info' in obj && typeof obj.info === 'object') {
return objectToArray(obj.info, arr); // 递归处理info属性中的对象
}
}
return arr;
}
let obj = { a: 1, info: { a: 2, info: { a: 3 } } };
let result = objectToArray(obj);
console.log(result);