Javascript 使用递归函数添加键
我有一个JSON:Javascript 使用递归函数添加键,javascript,node.js,Javascript,Node.js,我有一个JSON: { "my_obj": [ { "qte": [ { "qte1": "2", "somthing": "toto" }, { "qte1": "1", "somthing":
{
"my_obj": [
{
"qte": [
{
"qte1": "2",
"somthing": "toto"
},
{
"qte1": "1",
"somthing": "tata"
}
]
},
{
"qte": [
{
"qte1": "77"
},
{
"somthing": "titi"
}
]
}
]
}
我需要使用递归或一些函数nodej添加所有键“qte1”,这样可以得到如下结果:
{
"sumQte" : 80
}
致以最诚挚的问候有很多方法可以解决您的问题。这可能不是最优的
const test = {
"my_obj": [
{
"qte": [
{
"qte1": "2",
"somthing": "toto"
},
{
"qte1": "1",
"somthing": "tata"
}
]
},
{
"qte": [
{
"qte1": "77"
},
{
"somthing": "titi"
}
]
}
]
};
let sum = 0;
test.my_obj.map(obj => {
obj.qte.map(obj2 =>{
if(obj2.qte1 != null){
sum+=parseInt(obj2.qte1);
}
});
});
console.log(sum);
var obj={“my_obj”:[{“qte”:[{“qte1”:“2”,“somthing”:“toto”},{“qte1”:“1”,“somthing”:“tata”}},{“qte”:[{“qte1”:“77”},{“somthing”:“titi”}}};
函数getQte1(obj){
if(obj instanceof Array){//如果这是一个数组
var总和=0;
对象forEach(函数(o){
sum+=getQte1(o);
});
回报金额;
}
//否则它就是一个物体
var总和=0;
//如果它具有属性qte(数组),则将结果添加到sum中
if(obj.qte!==未定义)
sum+=getQte1(对象qte);
//如果它具有属性qte1(数字),则将结果添加到sum中
if(obj.qte1!==未定义)
sum+=parseInt(对象qte1);
回报金额;
}
日志(getQte1(obj.my_obj))代码>您可以使用迭代和递归方法来检查真实性,或者是否找到了键,或者实际数据是否是对象,然后再次调用该函数
它适用于任何深度
函数getSum(对象,键){
返回对象。键(对象)。减少(函数(s,k){
如果(!对象[k]){
返回s;
}
如果(k==键){
返回s++对象[k];
}
if(对象的类型[k]=“对象”){
返回s+getSum(对象[k],键);
}
返回s;
}, 0);
};
var数据={my_obj:[{qte:[{qte1:“2”,somthing:“toto”},{qte1:“1”,somthing:“tata”}]},{qte:[{qte1:“77”},{somthing:“titi”}]},
sum=getSum(数据“qte1”);
控制台日志(总和)代码>这很简单。到目前为止,您尝试过什么?我尝试过使用递归。您能否重新格式化您的问题代码,以提供输入和所需输出的确切示例?我现在不确定你想做什么,我想这是很清楚的。我只需要添加所有关键点“qte1”,因为您没有显示自己的尝试,所以您将获得向下投票和关闭投票。现在,它读起来好像你想让别人为你做你的工作。如果您向我们展示您的尝试以及失败的原因,我们可以指导您找到解决方案,而不是交付您需要的代码…谢谢@Nina ScholzThanks@LordMarty@Charuka编辑应该是为了增强代码,而不是恶化代码。