【发布时间】:2019-06-23 18:28:22
【问题描述】:
我试图将对象循环得更深,因为这个对象有树,而且非常深,为了能够让它循环并获取数据,我应该尝试递归它,我被困在这里,结果是undefined
这是数据,输出在里面:
function operationEvaluator(operation) {
Object.keys(operation).forEach(el => {
if(typeof operation[el] === 'object'){
return operationEvaluator(operation[el])
}
if(typeof operation[el] === 'number'){
return operation.left + operationEvaluator(operation.op)
} else {
if(operation.op == '-'){
return operation.left - operation.right.left
} else if( operation.op == '*'){
// console.log(operation.left*operation.right.left);
return operation.left * operation.right.left
} else if(operation.op == '+' ){
return operation.left + operation.right.left
} else if(operation.op == '/' ){
return operation.left / operation.right.left
}
}
})
}
var op1 = {
left: 5,
op: '-',
right: {
left: 3,
op: '*',
right: {
left: 8,
op: '-',
right: {
left: 200,
op: '/',
right: 5,
}
}
}
};
// prosses: 5 - (3 * (8 - (200 / 5)))
console.log(operationEvaluator(op1)); // 101
var op2 = {
left: {
left: 10,
op: '*',
right: {
left: 2,
op: '+',
right: 1,
},
},
op: '+',
right: {
left: 5,
op: '*',
right: {
left: 1,
op: '-',
right: {
left: 1,
op: '+',
right: 2,
}
}
}
};
// prosses: ((10 * (2 + 1)) + (5 * (1 - (1 + 2)))
console.log(operationEvaluator(op2)); // 20
我尝试console.log最后一个条件else中的每个数据,它显示了operation.left和operations.right.left的数量
但是当我返回它时,结果是未定义的,没有什么可炫耀的
我错过了什么吗? else 条件下的示例
IF 运算等于'*'
然后我控制台记录 operation.left 和 operation.right.left
它显示了数字,我试图将它乘以 console.log,它显示了结果,
【问题讨论】:
标签: javascript json object recursion