首页 > 解决方案 > 在数组中找到某个键​​值对时,如何返回步数 [i]?

问题描述

Super NOOB to javascript,所以我需要一些帮助来尝试解析这个 JSON 对象并返回一个特定的值。

所以我有一个来自 API 调用的 JSON 有效负载,我已经变成了一个对象(对不起,我仍然不知道如何换行,所以它很容易在 Stack Overflow 上显示):

var myObj = JSON.parse("{'ClassID':'1ghjk2345','ProcessName':'Workflow','Steps':[{'Id':'1234ghjhg102','Name':'Start','ActivityInstanceID':'12435r3ffe2'},{'Id':'134gbvgg102','Name':'attendance','ActivityInstanceID':'7865fdghd'},{'Id':'1jhgy102','Name':'lesson','ActivityInstanceID':'12gs5ghdse2'},{'Id':'1ghkb102','Name':'quiz','ActivityInstanceID':'1sgdtgt'},{'Id':'12fkfh02','Name':'evaluation','ActivityInstanceID':'1243sdfgssdfg2'},{'Id':'1khfhf02','Name':'dismissal','ActivityInstanceID':'124sdfgdfgrrrfe2'}],'TimeTaken':54838,'_id':'PK21342ffh','status':'Complete'}");

我想返回包含此键值对的数组中的步骤号:

'Name':'evaluation'

我需要这个,因为每个有效负载的步骤顺序都会发生变化 - 有时是第 4 步,有时是第 2 步,具体取决于教师在应用程序中启动该步骤的时间。

然后我想检索该步骤的“ActivityInstanceID”。

标签: javascriptarrays

解决方案


您需要更改数据以符合 json 要求。使用小写的变量名称。

var myData = JSON.parse('{"ClassID":"1ghjk2345","ProcessName":"Workflow","Steps":[{"Id":"1234ghjhg102","Name":"Start","ActivityInstanceID":"12435r3ffe2"},{"Id":"134gbvgg102","Name":"attendance","ActivityInstanceID":"7865fdghd"},{"Id":"1jhgy102","Name":"lesson","ActivityInstanceID":"12gs5ghdse2"},{"Id":"1ghkb102","Name":"quiz","ActivityInstanceID":"1sgdtgt"},{"Id":"12fkfh02","Name":"evaluation","ActivityInstanceID":"1243sdfgssdfg2"},{"Id":"1khfhf02","Name":"dismissal","ActivityInstanceID":"124sdfgdfgrrrfe2"}],"TimeTaken":54838,"_id":"PK21342ffh","status":"Complete"}');

for (let i = 0; i < myData.Steps.length; i++) {
    if(myData.Steps[i].Name === "evaluation") console.log("the step is: ", i);    
}


推荐阅读