使用 JavaScript 将数组转换为列表

Spe*_*e43 5 javascript arrays flatten

我正在通读Eloquent JavaScript,在第 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 += ("value:" + i + ", rest: null");
    }
    return list;
}

console.log(arrayToList([1, 2, 3]));
Run Code Online (Sandbox Code Playgroud)

这会注销:

[object Object]value:2, rest: null

正如您所看到的,我不理解如何通过迭代创建“嵌套”对象(列表)。有人可以向我解释一下吗?

Nin*_*olz 4

您需要从null第一个list值开始。

然后,您需要迭代索引从最后一个到零的元素,并使用list数组和前一个列表中的实际值分配一个新对象作为rest


您尝试过的是通过检查元素并从错误的值开始进行错误的迭代,然后通过添加字符串而不是对象将其转换为字符串。

function arrayToList(array) {
    let list = null;
    for (let i = array.length - 1; i >= 0; i--) {
        list = { value: array[i], rest: list };
    }
    return list;
}

console.log(arrayToList([1, 2, 3]));
Run Code Online (Sandbox Code Playgroud)