我有一个Web应用程序,它使用来自另一个Web服务的数据,它们是JSON格式的。我将数据订阅为results[]
,我可以通过获取html中的每个索引来访问每个字段,例如{{results?.ABC.D[0].Name[0]}}
,然后返回Susan
。 (请参阅下面的数据示例)。
我想要做的是在results
中搜索以查找Name
并返回G
。基本上,我希望获得G
与D
位于同一数组Name
时的内容。
{
"ABC": {
"D": [
{
"Name": [ "Susan" ],
"F": [ "School_0" ],
"G": [ "14" ]
},
{
"Name": [ "Lydia" ],
"F": [ "School_1" ],
"G": [ "284" ]
}
]
}
}
答案 0 :(得分:3)
我认为这就是你所需要的:
假设我们拥有的数据样本如下:
let dataSample =
{
"ABC": {
"D": [
{
"Name": [
"Susan",
"Sophia"
],
"F": [
"School_0"
],
"G": [
"14"
]
},
{
"Name": [
"Lydia"
],
"F": [
"School_1"
],
"G": [
"284"
]
}
]
}
}
如果你想迭代所有的Name [],那么你也应该在“Name”数组中找到你想要的名字的索引并检索它,然后找到包含那个的“D”的索引检索到的名称像这样:
let names = ["Sophia", "Susan", "Lydia"];
names.forEach(function(name) {
this.findNameG(name)
})
function findNameG(nameToFind: String) {
let index = dataSample.ABC.D.findIndex(d => d.Name[d.Name.findIndex(name => name === nameToFind)]);
console.log(dataSample.ABC.D[index].G);
}
所以你需要先找到名字的索引,然后在该索引处返回G的值。
请考虑这是区分大小写的,如果您想要明智的话,您应该对源和目标使用toLowerCase()或toUpperCase()方法。
希望这有帮助。
答案 1 :(得分:0)
您是否想要返回G,条件是您有姓名[0]值? 在这种情况下:
{{results?.ABC.D[0].Name[0] ? results?.ABC.D[0].G : '' }}
答案 2 :(得分:0)
你可以试试这个
jsonData = {
"ABC":{
"D":[
{
"Name":[
"Susan"
],
"F":[
"School_0"
],
"G":[
"14"
]
},
{
"Name":[
"Lydia"
],
"F":[
"School_1"
],
"G":[
"284"
]
}
]
}
}
你可以这样检查,但我相信必须有一个简单的解决方案
for (var key1 in this.jsonData) {
if (this.jsonData.hasOwnProperty(key1)) {
for (var key2 in this.jsonData[key1]){
if (this.jsonData[key1].hasOwnProperty(key2)){
if(key2 == "D"){
for (var key3 in this.jsonData[key1][key2]){
if (this.jsonData[key1][key2].hasOwnProperty(key3)){
if(this.jsonData[key1][key2][key3]["Name"][0] == "Susan"){
console.log(this.jsonData[key1][key2][key3]["G"][0])
}
}
}
}
}
}
}
}