javascript - 为什么这个[circular]元素被附加到数组的末尾?

标签 javascript

运行此代码时:

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/

相关文章:

javascript - Angularjs(选择): Show other attribute from array than the one stored in ng-model

javascript - 如何在 JavaScript 或 jQuery 中查找父元素宽度?

javascript - 多行函数调用的 eslint 规则

javascript - 如何通过单击按钮显示 iframe (JavaScript)

javascript - 如何迭代字符串并查明它是否在对象文字中可用?

javascript - 如何禁用 div 内的 JavaScript?

javascript - 正则表达式检查两个连续的空格?

javascript - 如何获取 Three.js 模型的特定高度的顶点?

JavaScript 事件监听器

javascript - 无法对帖子磁带中的每个帖子使用带有 ajax 的 Like 按钮