【问题标题】:How to iterate an Javascript Object from the inside out如何从内到外迭代 Javascript 对象
【发布时间】:2020-06-29 19:38:37
【问题描述】:

我有以下 Javascript 对象,我想在出来时从最里面的对象进行迭代。如果一个内部对象是一个整数数组和 Javascript 对象,我们首先遍历 Javascript 对象,然后是整数。

我该怎么办?

提前谢谢大家。

我想要这样的迭代过程:

109[107] -> 109[1] -> 109[0] -> [3] -> [6] -> ......

Javascript 对象:

[
    97,
    {
      '109': [ 
        98,  99, 
        '107': [ 100, 101, 102 ]
      ]
    },
    110,
    {'386': [103, 105, 106 ]},
    387,
    388,
    { '671': 104 },
    672
  ]

编辑

我指的是 Javascript 对象,而不是 JSON 数组。

【问题讨论】:

  • 那是无效的 JSON,不是吗?您不能在数组中使用属性语法。
  • 这不是“JSON 数组”,也不是“JSON 对象”。 There's no such thing,因为 JSON 是一种文本格式。你有一个包含数组和对象的数组。尝试不包含“JSON”一词的搜索,您可能会找到更多匹配项。
  • 您需要更好地解释一下您希望如何从示例输入获得所需的输出,以及一些所需的输出。
  • 这个 ('109': [ 98, 99, '107': [ 100, 101, 102 ]]) 仍然是无效的语法
  • 为什么你的数据是这种格式的?将数字、对象和对象与数组混合在一起似乎很奇怪。在继续之前,我会将您的数据标准化。

标签: javascript arrays json iteration javascript-objects


【解决方案1】:

不可能。此数据结构中没有自下而上的引用;这意味着项目不存储“父”引用以使您能够向后迭代(例如,只有一个引用存在访问[ 100, 101, 102 ],它是array[1]['109'][2]);所以唯一的办法就是从上到下;

您应该创建自己的数据结构来支持这一点(例如,使用 two-way link list 和数组的组合 ..)


假设您有一系列“盒子”(Frustration 礼品盒),每个盒子可能包含也可能不包含较小的盒子,了解盒子是否包含较小盒子的唯一方法是打开父盒子并看看里面有什么。和父母里面的小盒子一样,你必须打开它直到你拿到礼物。

现在想象一下,您有 10 个挫折礼盒,直到全部打开之前您都不知道里面装的是什么;你已经打开了每个盒子,所有的盒子现在都暴露了,你确切地知道每个盒子里有多少个小盒子,礼物在哪里。 这是有趣的部分,现在你在问,我怎样才能先获得礼物,而不先打开所有的盒子。你不能,因为它不打算从最里面的盒子里拿到;你必须努力去做,直到找到礼物。


顺便说一句,递归方法似乎很适合您的需要,您必须首先公开所有内容,然后存储父引用,然后向后迭代。顺便说一句,听起来效率不高。我建议尝试另一种方法,而不是从下到上迭代;

【讨论】:

  • 仅供参考:如果不是您拍摄的,通常需要注明出处。这是一个友好的警告,因为某些模组会删除此类帖子。添加图片作者的版权声明或将其从您的帖子中删除。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多