gpt4 book ai didi

JavaScript 从数组制作列表

转载 作者:行者123 更新时间:2023-11-30 09:47:08 25 4
gpt4 key购买 nike

我正在尝试用 JavaScript 中的数组创建一个列表。我最初使用点符号来定义每个变量的新值。然而,这会产生一个看起来像是数组中第一个值的无限列表。

{value: 10, rest: {value: 10, rest:{etc...}}}

作为提示给出的代码是在下面的函数中注释掉的代码。运行时,这会给出正确的输出(除了将 null 分配给我尚未编码的最后一个剩余值)。

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

console.log(arrayToList([10, 20]));
// → {value: 10, rest: {value: 20, rest: null}}

使用这两种不同的方法有什么区别?

最佳答案

您正在使用 object 进行循环引用,因为您使用相同的对象分配给 object.rest

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

console.log(arrayToList([10, 20]));
// → {value: 10, rest: {value: 20, rest: null}}

另一个例子用赋值覆盖了object

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

console.log(arrayToList([10, 20]));
// → {value: 10, rest: {value: 20, rest: null}}

您可以使用带有 Array#reduce 的简短 ES6 版本用于返回其余对象。

function toList(arr) {
var result = {};
arr.reduce((o, a) => (o.value = a, o.rest = {}), result);
return result;
}

console.log(toList([2, 3, 5, 7, 11]));

关于JavaScript 从数组制作列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38413682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com