Python 在JSON上循环-需要逻辑来计算值的总和
我试图从下面的JSON中获取keyPython 在JSON上循环-需要逻辑来计算值的总和,python,json,algorithm,typescript,logic,Python,Json,Algorithm,Typescript,Logic,我试图从下面的JSON中获取keynumber的值之和 总和=193(21+52+52+68) 我将在这里使用循环,而不是直接访问响应['jobs']['0']['lastBuild']['number']。 谁能提供逻辑?任何编程语言都可以 { "_class": "hudson.model.Hudson", "jobs": [ { "_class": "org.jenkinsci.plugins.workflow.job.WorkflowJob", "
number
的值之和
总和=193(21+52+52+68)
我将在这里使用循环,而不是直接访问响应['jobs']['0']['lastBuild']['number']。
谁能提供逻辑?任何编程语言都可以
{
"_class": "hudson.model.Hudson",
"jobs": [
{
"_class": "org.jenkinsci.plugins.workflow.job.WorkflowJob",
"name": "ADP-CHINA-IT",
"lastBuild": {
"_class": "org.jenkinsci.plugins.workflow.job.WorkflowRun",
"number": 21
}
},
{
"_class": "com.cloudbees.hudson.plugins.folder.Folder",
"name": "A",
"jobs": [
{
"_class": "hudson.model.FreeStyleProject",
"name": "dummy",
"lastBuild": {
"_class": "hudson.model.FreeStyleBuild",
"number": 52
}
},
{
"_class": "com.cloudbees.hudson.plugins.folder.Folder",
"name": "F",
"jobs": [
{
"_class": "org.jenkinsci.plugins.workflow.job.WorkflowJob",
"name": "pipeline",
"lastBuild": {
"_class": "hudson.model.FreeStyleBuild",
"number": 52
}
}
]
}
]
},
{
"_class": "org.jenkinsci.plugins.workflow.job.WorkflowJob",
"name": "CICD_Windows_Shared_Lib_Test",
"lastBuild": {
"_class": "org.jenkinsci.plugins.workflow.job.WorkflowRun",
"number": 68
}
}
]
}使用
数组。原型。递归减少:
type Job = {lastBuild: {number: number}, jobs?: Job[]}
const reduction = (acc: number, job:Job) => acc + job.lastBuild.number
+ (job.jobs ? job.jobs.reduce(reduction,0) : 0); // recursion
response.jobs.reduce(reduction, 0);
递归使用Array.prototype.reduce
:
type Job = {lastBuild: {number: number}, jobs?: Job[]}
const reduction = (acc: number, job:Job) => acc + job.lastBuild.number
+ (job.jobs ? job.jobs.reduce(reduction,0) : 0); // recursion
response.jobs.reduce(reduction, 0);
python:
def sum_(s, dict_):
return s + reduce(sum_, dict_.get("jobs", []), 0) + dict_.get("lastBuild", {}).get("number", 0)
reduce(sum_, response["jobs"], 0)
python:
def sum_(s, dict_):
return s + reduce(sum_, dict_.get("jobs", []), 0) + dict_.get("lastBuild", {}).get("number", 0)
reduce(sum_, response["jobs"], 0)
函数reduce
fromfunctools
我们可以在typescript中使用相同的逻辑吗?函数reduce
fromfunctools
我们可以在typescript中使用相同的逻辑吗?这看起来像是与文件夹层次结构相对应的结构化输出。这是否意味着number
键可以嵌套在任何级别?@DroidX86是的,number键可以嵌套在任何级别。这看起来像是与文件夹层次结构相对应的结构化输出。这是否意味着number
键可以嵌套在任何级别?@DroidX86是的,number键可以嵌套在任何级别。