运行此代码时:
function arrayToList(arr) {
if (arr.length == 1) {
return {
value: arr[0],
rest: null
};
} else {
return {
value: arr[0],
rest: arrayToList(arr.splice(1))
};
}
}
function listToArray(list, arr = []) {
if (list.rest == null) {
return list.value;
} else {
arr.push(list.value);
arr.push(listToArray(list.rest, arr))
return arr;
}
return arr;
}
console.log(listToArray(arrayToList([1, 2, 3, 4, 5])));
它应该将数组转换为链接列表,然后再转换回数组,我出现了这些奇怪的[Circular]
符号 - 这些是什么?
输出:
[ 1, 2, 3, 4, 5, [Circular], [Circular], [Circular] ]
最佳答案
[Circular]
符号用于表示数组的一个元素,即数组本身。人们永远无法完全表示这个元素,因为它会递归地无限扩展。
查看此内容的最简单方法是:
let a = [];
a.push(a);
console.log(a);
请注意,stackoverflow 的代码片段系统有一种不同的方式来可视化包含自身的数组。如果您在自己的环境中运行此代码,您将看到发生[Circular]
现象。
关于javascript - 为什么这个[circular]元素被附加到数组的末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68073106/