Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在我的角度应用程序中从数组中的对象获取值_Javascript_Arrays_Angular_Typescript - Fatal编程技术网

Javascript 如何在我的角度应用程序中从数组中的对象获取值

Javascript 如何在我的角度应用程序中从数组中的对象获取值,javascript,arrays,angular,typescript,Javascript,Arrays,Angular,Typescript,在我的Angular应用程序中,这个对象数组来自一个API "register":[ { "club": 8, "players": 100, "officials": 10 }, { "male": 7, "female": 2, "other": 1 }, { "Brazil": 5, "France": 1, "Italy": 2, "England": 2 } ] 我的目标是在控制台的第三个对象中显示一个项目。因此,我尝试通过以下方式循环对象数组: let country = da

在我的Angular应用程序中,这个对象数组来自一个API

"register":[
{
"club": 8,
"players": 100,
"officials": 10
},
{
"male": 7,
"female": 2,
"other": 1
},
{
"Brazil": 5,
"France": 1,
"Italy": 2,
"England": 2
}
]
我的目标是在控制台的第三个对象中显示一个项目。因此,我尝试通过以下方式循环对象数组:

 let country =  data['register'].map(data => data.England)
  console.log(country) // Output: [undefined, undefined, 2]
我猜未定义的来自前两个对象

如何循环此对象以仅获取第三个对象中英格兰的图形,而不显示前两个未定义的图形

注意

数据来自我在.ts文件中订阅的API。它包含来自API的所有结果。

您可以
.filter()
筛选出所有没有
英格兰
键的对象(并保留所有有键的对象),然后
.map()
您的对象数组如下:

const data={注册:[{俱乐部:8名,球员:100名,官员:10名,{男:7名,女:2名,其他:1名,{巴西:5名,法国:1名,意大利:2名,英格兰:2名]};
让country=data.register
.filter(obj=>obj中的'England')//使用England属性保留数组中的所有对象
.map(obj=>obj.England)//映射到England属性

console.log(country)//输出:[2]
您可以使用Lodash中的
.compact(array)
内置函数,该函数删除所有错误值,如false、null、0、“”、undefined和NaN

let country = _.compact(data['register'].map(data => data.England));
console.log(country) // Output: [2]

map的用例与您试图实现的完全不同。Map在集合上迭代,并为集合下的每个项生成新结果,并将返回该结果。因此,对于前两个对象,它没有找到未定义的对象。您有3个对象,您得到了一个3的数组,前两个是未定义的当您想要处理集合并想要具有所需结果的新集合时,请使用map

在这里,您可以使用查找:

const foundItem = data.register.find(item => item.England)
console.log(foundItem.England); // you can access all attributes here
console.log( [foundItem.England] ); // as array

data['register'][2]。英格兰
如果元素的位置总是第三位。非常感谢。这起作用了。另外,如果要将对象中的所有元素显示为数组。我该怎么做呢?我已经厌倦了这样做:``让country=data.register.filter(obj=>obj中的'England').map(obj=>obj)console.log(country)//输出:[{“巴西”:5,“法国”:1,“意大利”:2,“英格兰”:2}]``我只希望它们在一个数组中,而不是在一个对象数组中。类似这样:`[5,1,2,2]我对.find()的问题是,它将结果作为对象提供给我。我希望它是一个数组。只需分配为数组:console.log([foundItem.England]);我编辑过这本书,效果也不错,但对于我所面临的情况,我会选择上面尼克·帕森斯的答案。我真的很感谢你的回答。谢谢。@DejiAdesoga不用担心。