我试图从给定id的对象数组中获取值,但是我无法使其工作。问题是我有一系列对象,所以我不知道如何迭代它们。我知道使用.map方法可能是一种可能的解决方案,但我对此有了新的认识。
我怎么能迭代它们?我实际上正在使用它:
getName(field_id: any): any {
var aux = 0;
var obj = this.customFields[aux].filter(function (obj) {
return obj.name === field_id;
})[0];
aux ++;
}
其中aux是迭代器。 Ofc不起作用。
答案 0 :(得分:1)
考虑包含对象的数组,你可以只使用过滤函数,不需要使用索引器
var arr = [
{id: 1, name: "something"},
{id: 2, name: "something1"},
{id: 3, name: "something2"},
{id: 4, name: "something3"},
{id: 5, name: "something4"}
]
var id=3
var obj = arr.filter(function(obj) {
return obj.id === id;
})
console.log(obj[0].name)
答案 1 :(得分:1)
我认为您的问题是您将名称与ID进行比较。如果你想避免循环:
// This find the correct entry corresponding to the id you are looking for
var correctField = this.customFields.find(function(field) {
return field.id === field_id;
});
// Then you get the name from the entry
var nameToFind = correctField && correctField.name;
您可能必须替换find,具体取决于您的浏览器支持。
替换它的方法: this.customFields.filter()[0]
答案 2 :(得分:1)
您只需使用for loop
,如下所示
var arr = [{id:1,name:"abc"},{id:2,name:"pqr"},{id:3,name:"lmn"}]
function getName(id){
for(var i=0;i<arr.length;i++)
if(arr[i].id==id)
return arr[i].name;
return null
}
getName(2);// pqr