如何从对象数组中查找name属性

时间:2017-04-28 10:18:58

标签: javascript arrays object dictionary

我试图从给定id的对象数组中获取值,但是我无法使其工作。问题是我有一系列对象,所以我不知道如何迭代它们。我知道使用.map方法可能是一种可能的解决方案,但我对此有了新的认识。

我的方法是给定一个Id,它必须从同一个对象返回我的名字。 enter image description here

我怎么能迭代它们?我实际上正在使用它:

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不起作用。

3 个答案:

答案 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