使用JavaScript将数组转换为列表
我正在通读,在第4章的末尾,它向您提出了将数组转换为列表的挑战,即使用JavaScript将数组转换为列表,javascript,arrays,flatten,Javascript,Arrays,Flatten,我正在通读,在第4章的末尾,它向您提出了将数组转换为列表的挑战,即 [1,3,3]-->{value:1,rest:{value:2,rest:{value:3,rest:null}} 我不认为我理解这个概念 它建议在数组中反向迭代,因此我尝试了: function arrayToList(array) { let list = {}; for (let i = array.length -1; i > array[0]; i--) { list += ("
[1,3,3]-->{value:1,rest:{value:2,rest:{value:3,rest:null}}代码>
我不认为我理解这个概念
它建议在数组中反向迭代,因此我尝试了:
function arrayToList(array) {
let list = {};
for (let i = array.length -1; i > array[0]; i--) {
list += ("value:" + i + ", rest: null");
}
return list;
}
console.log(arrayToList([1, 2, 3]));
这将注销:
[object]值:2,rest:null
如您所见,我不理解如何通过迭代创建“嵌套”对象(列表)。有人能给我解释一下吗?您需要以null
作为第一个list
值开始
然后,您需要使用从最后一个到零的索引遍历元素,并使用数组中的实际值分配一个新的list
对象,前一个列表为rest
您所尝试的是一个错误的迭代,它检查一个元素,并从一个错误的值开始,然后通过添加字符串(而不是对象)将该值转换为字符串
函数数组列表(数组){
让list=null;
for(设i=array.length-1;i>=0;i--){
list={value:array[i],rest:list};
}
退货清单;
}
log(数组列表([1,2,3])代码>您可以大大简化代码
有两种情况:要么数组是空的,在本例中转换为null
,要么不是空的,在本例中只有第一个值重要,其余值可以在数组的其余部分上递归处理。这是一条单行线
const converter=arr=>arr.length?({value:arr[0],rest:converter(arr.filter(({,i)=>i>0))}):null;
log(转换器(['a','b','c'])代码>通过正向迭代,您可以执行如下操作。在数组上迭代,在每次迭代中定义嵌套对象,直到到达最后一个元素,当到达最后一个元素时,将属性定义为null
let data=[1,3,3];
设res={};
for(设i=0,obj=res;i console.log(res)
这可能是一个非常适合递归方法的问题:
函数数组列表(数组)
{
如果(array.length我认为您对代码中出现问题的原因有很好的答案,但如果您感兴趣,这是一个非常好的用例
a=[1,3,3]
设l=a.reduceRight((rest,val)=>({val,rest}),null)
log(l)
它不会将数组转换为列表,而是将数组转换为表示ArrayOpe的对象,它应该用null
初始化,而不是{}
哦,我明白了,所以你可以将值声明为值:
,其余的声明为其余:
-如果我理解正确,你不需要在它们周围加引号,因为它们是对象属性。好的一点是,保持该方法始终存在。