Javascript 从数组中检索值的更简单方法
有没有比在我的代码中使用for循环更简单的方法来检索JSON响应中的值Javascript 从数组中检索值的更简单方法,javascript,postman,Javascript,Postman,有没有比在我的代码中使用for循环更简单的方法来检索JSON响应中的值“TestProject” [ { "Id": "9ac44c1d-0066-47aa-a2a2-a9b90109b0a5", "Group": null, "DataFields": [ { "Header": "ProjectID", "Value": "TestProject"
“TestProject”
[
{
"Id": "9ac44c1d-0066-47aa-a2a2-a9b90109b0a5",
"Group": null,
"DataFields": [
{
"Header": "ProjectID",
"Value": "TestProject"
},
{
"Header": "uui_ConfigPack",
"Value": "75e8ce5a-7ae0-41ca-86f0-aca1e7158073"
}
],
"HasDocuments": null
}
]
var projResults=JSON.parse(responseBody);
var projNumber=1;
dataProjectId=projResults[projNumber].Id;
projName='未找到';
对于(i=0;i
看起来您正试图在数组中查找对象,最常用的方法是array.prototype.find
:
var projResults=[
{
“Id”:“9ac44c1d-0066-47aa-a2a2-a9b90109b0a5”,
“组”:空,
“数据字段”:[
{
“Header”:“ProjectID”,
“值”:“TestProject”
},
{
“标题”:“uui\U配置包”,
“值”:“75e8ce5a-7ae0-41ca-86f0-aca1e7158073”
}
],
“HasDocuments”:空
}
];
var projNumber=0;
const foundObj=projResults[projNumber].DataFields.find(({Header})=>Header=='ProjectID');
const projName=foundObj?foundObj.Value:'未找到';
console.log(projName)
看起来您正在尝试在数组中查找对象,最常用的方法是array.prototype.find
:
var projResults=[
{
“Id”:“9ac44c1d-0066-47aa-a2a2-a9b90109b0a5”,
“组”:空,
“数据字段”:[
{
“Header”:“ProjectID”,
“值”:“TestProject”
},
{
“标题”:“uui\U配置包”,
“值”:“75e8ce5a-7ae0-41ca-86f0-aca1e7158073”
}
],
“HasDocuments”:空
}
];
var projNumber=0;
const foundObj=projResults[projNumber].DataFields.find(({Header})=>Header=='ProjectID');
const projName=foundObj?foundObj.Value:'未找到';
console.log(projName)代码>我建议您阅读以下数组方法:
- 地图
- 滤器
- 减少
...
这些函数将帮助您以高效的方式管理阵列,它将使您的代码看起来更干净、更易于阅读,您将在此处找到有关它的更多信息:
我建议使用wesbos的“javascript 30”,他有一段精彩的视频:)我建议阅读数组方法,如:
- 地图
- 滤器
- 减少
...
这些函数将帮助您以高效的方式管理阵列,它将使您的代码看起来更干净、更易于阅读,您将在此处找到有关它的更多信息:
我建议使用wesbos的“javascript 30”,他有一段精彩的视频:)你可以使用更高阶的函数,比如map
过滤器减少等等。
为了避免循环
这是一条1号班轮:
var obj=[
{
“Id”:“9ac44c1d-0066-47aa-a2a2-a9b90109b0a5”,
“组”:空,
“数据字段”:[
{
“Header”:“ProjectID”,
“值”:“TestProject”
},
{
“标题”:“uui\U配置包”,
“值”:“75e8ce5a-7ae0-41ca-86f0-aca1e7158073”
}
],
“HasDocuments”:空
}
]
log(obj.map(i=>i.DataFields).flat(1).find(i=>i.Header==='ProjectID').Value)
您可以使用更高阶的函数,如map
filter
reduce
等。
为了避免循环
这是一条1号班轮:
var obj=[
{
“Id”:“9ac44c1d-0066-47aa-a2a2-a9b90109b0a5”,
“组”:空,
“数据字段”:[
{
“Header”:“ProjectID”,
“值”:“TestProject”
},
{
“标题”:“uui\U配置包”,
“值”:“75e8ce5a-7ae0-41ca-86f0-aca1e7158073”
}
],
“HasDocuments”:空
}
]
log(obj.map(i=>i.DataFields).flat(1).find(i=>i.Header==='ProjectID').Value)代码>不,没有更简单的方法。如果您需要重复该逻辑,某些库或帮助函数可以帮助您,但基本上所有这些都将在整个过程中使用某种形式的迭代array@vlaz是的,有,find
方法。@SamiHult是数组上的某种迭代,但更简单:)此外,一旦找到匹配项,它将停止,原始代码没有。尽管如此,就复杂性而言,它基本上是一个O(n)
操作不,没有更简单的方法。如果您需要重复该逻辑,某些库或帮助函数可以帮助您,但基本上所有这些都将在整个过程中使用某种形式的迭代array@vlaz是的,有,find
方法。@SamiHult是数组上的某种迭代,但更简单:)此外,一旦找到匹配项,它将停止,原始代码没有。尽管如此,就复杂性而言,它基本上是一个O(n)
操作。这构造了两个不必要的中间数组,如果找不到匹配项,将抛出一个错误。“一个1行程序”-包含三个每次遍历数组的不同操作。事实上,你可以把所有这些放在一行并不意味着你应该这样做。因为如果行数是唯一的度量标准,那么任何缩小器也会将整个文件转换为一行,因此代码也同样好。这会构造两个不必要的中间数组,如果找不到匹配项,则会抛出错误。“1行”-包含每次遍历数组的三个不同操作。事实上,你可以把所有这些放在一行并不意味着你应该这样做。因为如果行数是您唯一的度量,那么任何缩小器也会将整个文件转换为一行,因此代码将为equa