gpt4 book ai didi

javascript - 递归对象 - Javascript

转载 作者:行者123 更新时间:2023-12-03 08:44:10 24 4
gpt4 key购买 nike

假设我有以下对象:

var my_obj = {
x: 0,
y: [Object]
}

每次调用函数recurse_object时,我都会向my_obj添加另一个元素,并创建一个递归对象:

function recurse_object(my_obj) {
if ("top" in my_obj) {
var x = my_obj;
my_obj = { top: x };
} else {
// missing test case.
}
return my_obj;
}

这样在第一次调用后 my_obj 将如下所示:

var my_obj = {
top: {
x: 0,
y: [Object]
}
}

第二次调用 recurse_object 将使 my_obj 看起来像:

   var my_obj = {
top: {
top: {
x: 0,
y1: [Object1]
},
x: 1,
y2: [Object2]
}
}

my_obj 中的 xy 的值将会改变。可以添加新属性y2。因此,我将把当前的 my_obj 放入 top 中,并将新元素复制到 "new" my_obj。我怎样才能在 JS 中实现这一点?

最佳答案

你的功能看起来有点奇怪。如果我正确理解你的问题,答案可能是这样的

function recurse_object(obj) {

var key='top';
if (obj.hasOwnProperty(key)) {
//here we change the y
var keys = Object.keys(obj.top);
var count='';
var currentCount='';
//go through all keys to find y because we don't know exact name
for(var k in keys){
if(k.indexOf('y')==0){
currentCount=k.substring(1);
if(currentCount!='')
count=parseInt(currentCount)+1;
else
count=1;
}
}
var x=obj;
obj['y'+count]=obj.['y'+currentCount];
delete obj.['y'+currentCount];
obj.top=x;
}
else{
obj.top=obj;
}
}

关于javascript - 递归对象 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32960678/

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