Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在任何级别递归更改JS对象/JSON值?_Javascript_Json_Nested_Key - Fatal编程技术网

Javascript 如何在任何级别递归更改JS对象/JSON值?

Javascript 如何在任何级别递归更改JS对象/JSON值?,javascript,json,nested,key,Javascript,Json,Nested,Key,请注意,我提供的结构只是一个示例,但可以是任何内容 主要目标是在任何级别将我选择的键的值递归地更改为我选择的值 下面是一个澄清的例子: var items = { price: 10, child: { price: 20, child: { price: 10 } }, child2: { price: 40, child: {

请注意,我提供的结构只是一个示例,但可以是任何内容

主要目标是在任何级别将我选择的键的值递归地更改为我选择的值

下面是一个澄清的例子:

    var items = {
      price: 10,
      child: {
        price: 20, 
         child: {
           price: 10
         }
      },
      child2: {
        price: 40,
        child: {
          price: 50,
          child: [{ price: 30 }, { price: 40 }]
        }
      }
    };

鉴于此,如何将所有价格更改为0?

递归循环并检查键
price

var items={price:10,child:{price:20,child:{price:10},child2:{price:40,child:{price:50,child:[{price:30},{price:40}};
功能循环(obj){
如果(对象的类型!==‘对象’)返回;
Object.keys(obj.forEach)(k)=>{
如果(k=='price')obj[k]=0;
else循环(obj[k]);
});
}
循环(项目);
console.log(项目)

.as控制台包装{max height:100%!important;top:0;}
递归循环并检查键
price

var items={price:10,child:{price:20,child:{price:10},child2:{price:40,child:{price:50,child:[{price:30},{price:40}};
功能循环(obj){
如果(对象的类型!==‘对象’)返回;
Object.keys(obj.forEach)(k)=>{
如果(k=='price')obj[k]=0;
else循环(obj[k]);
});
}
循环(项目);
console.log(项目)
.as控制台包装{max height:100%!important;top:0;}
这里有一个总体思路:

功能f(obj、prop、val){
如果(对象类型=='object'){
if(对象拥有自己的财产(财产))
obj[prop]=val;
用于(让我输入obj)
f(对象[i],属性,值);
}
}
可变项目={
价格:10,,
儿童:{
价格:20,,
儿童:{
价格:10
}
},
儿童2:{
价格:40,
儿童:{
价格:50,,
子项:[{price:30},{price:40}]
}
}
};
f(项目“价格”,0);
log(JSON.stringify(items))这里有一个总体思路:

功能f(obj、prop、val){
如果(对象类型=='object'){
if(对象拥有自己的财产(财产))
obj[prop]=val;
用于(让我输入obj)
f(对象[i],属性,值);
}
}
可变项目={
价格:10,,
儿童:{
价格:20,,
儿童:{
价格:10
}
},
儿童2:{
价格:40,
儿童:{
价格:50,,
子项:[{price:30},{price:40}]
}
}
};
f(项目“价格”,0);

log(JSON.stringify(items))我投票结束这个问题,因为它太宽泛了,因为它只是一个数据转储,请求其他人代表海报完成数据转换工作。这里似乎没有任何代码可以进行故障排除。我主要想知道是否有一个库函数可以做到这一点,但库问题也会被否决(但在堆栈溢出问题上没有否决)。我搜索过谷歌,我想要的解决方案太复杂了。通过在这里提问,我在不到5分钟内得到了一个简单的答案。。。这不是重点吗?请注意,我没有否决这个问题,但我确实提名了这个问题作为结束。在我看来,这个问题并没有真正提供任何证据,证明在数据转储出来之前已经做出了任何努力来解决这个问题。其他人的感受显然不同,所提供的答案就证明了这一点。虽然给出了一个可能为你指明正确方向的答案很好,但我不认为这个问题对未来的其他人有长期的积极作用。(这是网站的基石,是一个QA存储库)。我只是想让这个问题尽可能清楚和整洁。我认为任何想解决同样问题的人都会很高兴找到这些答案,因为他们的努力可能会把他们带到这里。我不明白的是,我之前所做的研究如何与长期效果相关?他们可能只想做同样的事情,在这里着陆,得到答案,然后出发(因为这是一个非常普遍的场景,而不仅仅是针对我的需求的数据转储)。我唯一能真正解释这一点的是,接近票和上升票/下降票都非常固执己见,每个人对这件事都有自己的看法,很多时候,观点是基于情感的。任何时候,当你的问题让人觉得你在把自己的工作“推”给别人,或者没有真正表现出任何努力时,你就更有可能得到消极的回答。在《帮助指南》中,首先要做的事情之一是,不仅要说明什么是错误的,而且要说明什么是无效的。我投票认为这个问题过于宽泛,因为它只是一个数据转储,要求其他人代表海报进行数据转换。这里似乎没有任何代码可以进行故障排除。我主要想知道是否有一个库函数可以做到这一点,但库问题也会被否决(但在堆栈溢出问题上没有否决)。我搜索过谷歌,我想要的解决方案太复杂了。通过在这里提问,我在不到5分钟内得到了一个简单的答案。。。这不是重点吗?请注意,我没有否决这个问题,但我确实提名了这个问题作为结束。在我看来,这个问题并没有真正提供任何证据,证明在数据转储出来之前已经做出了任何努力来解决这个问题。其他人的感受显然不同,所提供的答案就证明了这一点。虽然给出了一个可能为你指明正确方向的答案很好,但我不认为这个问题对未来的其他人有长期的积极作用。(这是网站的基石,是一个QA存储库)。我只是想让这个问题尽可能清楚和整洁。我认为任何想解决同样问题的人都会很高兴找到这些答案,因为他们的努力可能会把他们带到这里。我不明白的是我以前的研究是如何进行的