Javascript 将简单数组转换为以项作为子数组的复杂对象
使用javascript ES6,我试图获得一个简单的算法来转换包含字符串的数组,无大小限制,因此我需要一个对象,该对象的标签为数组项,子数组中的每个项,这取决于他的位置,有点难以解释 这是我“之前”得到的和“之后”想要的 我完全被阻止了,感谢您提供的帮助您可以使用这些帮助从阵列创建结构Javascript 将简单数组转换为以项作为子数组的复杂对象,javascript,arrays,Javascript,Arrays,使用javascript ES6,我试图获得一个简单的算法来转换包含字符串的数组,无大小限制,因此我需要一个对象,该对象的标签为数组项,子数组中的每个项,这取决于他的位置,有点难以解释 这是我“之前”得到的和“之后”想要的 我完全被阻止了,感谢您提供的帮助您可以使用这些帮助从阵列创建结构 reduceRight()从末尾获取一个元素,用对象包装它,并将前面的结果添加到子数组中。由于最后一个对象没有子对象,因此子对象是使用条件分配的 const before=[“a”、“b”、“c”、“d”];
reduceRight()
从末尾获取一个元素,用对象包装它,并将前面的结果添加到子数组中。由于最后一个对象没有子对象,因此子对象是使用条件分配的
const before=[“a”、“b”、“c”、“d”];
const after=before.reduceRight((r,name)=>
赋值({name},r!==null?{children:[r]}:{}),
无效);
console.log(之后)代码>可用于从数组创建结构
reduceRight()
从末尾获取一个元素,用对象包装它,并将前面的结果添加到子数组中。由于最后一个对象没有子对象,因此子对象是使用条件分配的
const before=[“a”、“b”、“c”、“d”];
const after=before.reduceRight((r,name)=>
赋值({name},r!==null?{children:[r]}:{}),
无效);
console.log(之后)
另一个答案,不用那些花哨的const
和reduceRight
东西=D
var之前=[“a”、“b”、“c”、“d”];
var after=createChildren(之前);
console.log(之后);
函数createChildren(obj){
if(目标长度){
返回{name:obj.shift(),子项:[createChildren(obj)]};
}
返回新数组();
}另一个答案,不用那些花哨的const
和reduceRight
东西=D
var之前=[“a”、“b”、“c”、“d”];
var after=createChildren(之前);
console.log(之后);
函数createChildren(obj){
if(目标长度){
返回{name:obj.shift(),子项:[createChildren(obj)]};
}
返回新数组();
}
这是我的解决方案:
const after=([name,…rest],children=rest.length&&[after(rest)]=>
儿童
? {name,children}
:{name};
常量before=['a','b','c','d'];
log(JSON.stringify(after(before),null,2))代码>这是我的解决方案:
const after=([name,…rest],children=rest.length&&[after(rest)]=>
儿童
? {name,children}
:{name};
常量before=['a','b','c','d'];
log(JSON.stringify(after(before),null,2))代码>此解决方案与Ori Dori的解决方案类似,但不使用
此解决方案与Ori Dori的解决方案类似,但不使用
你对使用递归持开放态度吗?是的,我对这一点不太了解。你对使用递归持开放态度吗?是的,我对这一点不太了解。。
before = ["a","b","c","d"]
after = {
name: "a"
children: [
{
name: "b",
children: [
{
name: "c",
children: [
name: "d"
]
}
]
}
]
}
["a","b","c","d"].reduceRight((r, v, i) => {
r.name = v;
return i === 0 ? r : { children: [r] }
}, {});