Javascript 在JS中使用任意长的数组作为对象键(对于多级对象)设置对象值

Javascript 在JS中使用任意长的数组作为对象键(对于多级对象)设置对象值,javascript,object,multi-level,Javascript,Object,Multi Level,我正试图解决一个我正在使用的节点API的问题,我遇到了一些应该很容易解决的问题,但我就是想不出来。假设我有这样一个数组: [1,2,1,…] 这个数组可以任意长。我需要使用数组中的值作为对象的键,因此对于上面的示例,我需要能够执行类似于另一个对象[1][2][1]=“hello world”的操作,无论数组有多长 我已经知道如何使用while循环或递归函数获取对象的值,但是我不知道如何设置这样的值 (万一有人想出一种方法来避免这个问题,并以不同的方式做我想做的事情,我将简要总结一下我正在做的工作

我正试图解决一个我正在使用的节点API的问题,我遇到了一些应该很容易解决的问题,但我就是想不出来。假设我有这样一个数组:

[1,2,1,…]

这个数组可以任意长。我需要使用数组中的值作为对象的键,因此对于上面的示例,我需要能够执行类似于
另一个对象[1][2][1]=“hello world”
的操作,无论数组有多长

我已经知道如何使用while循环或递归函数获取对象的值,但是我不知道如何设置这样的值

(万一有人想出一种方法来避免这个问题,并以不同的方式做我想做的事情,我将简要总结一下我正在做的工作

想象一下,在Twitter这样的社交网络中,你可以写一篇帖子作为对另一篇帖子的回复。然后有人可以回复你的帖子,等等,这样就可以有一大堆帖子,每个帖子都回复之前的帖子。但也可以有一堆回复,都是同一级别的——都回复同一篇帖子,而不是相互回复。我将其存储在数据库中的方法非常简单:如果一篇文章是一个回复,那么它有一个属性,该属性引用它回复的文章的ID。如果你能找到更好的存储方法,我很乐意听到它


现在问题来了。你如何显示对某个帖子的所有回复,以及对这些回复的所有回复,以及对这些回复的所有回复,等等?我想出了一个伪算法,可以创建类似于DOM的东西,由孩子和兄弟姐妹的评论等组成。我只需要一种方法来浏览因此,逻辑上,我需要一种方法来跟踪什么是什么,以及一种方法来修改单个元素。因此,我有一个数组来跟踪算法目前正在处理什么,然后是一个对象,它跟踪哪些帖子已经被发现,哪些帖子已经被处理。如果有更好的解决这个问题的方法,我很想听听)

我写了一个小片段

var obj = [];
var arr = [1,2,3];
var set = 11; // value we want to set to
var test = obj;

for(var k =0 ;k < arr.length; k++) {
    var i = arr[k];
    if(!test[i]) {
        if(k == arr.length-1){
            test[i] = set; }
         else{      
            test[i] = []
         }
    }
    test = test[i]
}

console.log(obj[1][2][3])
var obj=[];
var-arr=[1,2,3];
变量集=11;//我们要设置的值
var检验=obj;
对于(变量k=0;k

您可以为您的用例将其封装在函数中

实际上,您有一个带有id、父项和帖子的其他信息的单一数据集。这不嵌套在数据库中,网页中的呈现由日期驱动,其中父项为
null
或父项的任何其他指示符。事实上,我并不理解,问题是关于存储还是渲染的?您所描述的结构不是所谓的“DOM”,而是简单的。当然,应该根据元素的id而不是它们在树中的路径来修改元素。是的,循环或递归函数是正确的方法(使用您更熟悉的方法)。从一个通过路径访问值的函数开始,这比存储值的函数容易一点。你能告诉我们你的尝试吗?@NinaScholz对不起,我应该说得更清楚一点。它是关于从数据库中检索数据并进行渲染。我想要的是得到所有的帖子,这些帖子要么是对特定帖子的回复,要么是对该帖子回复的回复,等等。所以我需要一种方法来获取所有回复指定帖子的帖子,然后获取所有回复这些帖子的帖子,依此类推。我试图写一个算法来实现这一点,理论上它应该可以工作,但我需要一个表示帖子树的对象,以及一种在我找到新回复时向其中添加帖子的方法。@Bergi Oops,对不起,我不太擅长术语。是的,使用ID会更容易,但在这种情况下,这不是一个真正的选项。我需要能够,例如,获取当前正在处理的帖子的下一个同级的信息,以便使用ID,我需要一个ID对象,该对象表示树的结构,但为了生成这样的对象,我需要做的正是这个问题所涉及的——使用任意长的变量数组作为对象中的键。我会试着总结一下伪算法并发布,给我一点时间