【问题标题】:How to find the name property from an array of Objects如何从对象数组中查找名称属性
【发布时间】:2017-04-28 10:18:57
【问题描述】:

我正在尝试从给定 id 的对象数组中获取值,但我无法使其正常工作。问题是我有一个对象数组,所以我不知道如何迭代它们。我知道使用 .map 方法可能是一种可能的解决方案,但我对此并不陌生。

我的方法是给定一个 ID,它必须从同一个对象返回我的名称。

我如何迭代它们?我实际上正在使用这个:

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 不工作。

【问题讨论】:

  • var search=36;for(var i=0;i
  • 嗨西蒙,问题是我不能做array.length。如果我做 array[0].length() 我就可以做到
  • 您也可以使用Array.prototype.find,而不是使用Array.prototype.filter 并提取第一个元素,这将为您完成。
  • 你为什么不能使用array.length?如果它是一个对象数组,它应该可以工作(就像它没有严重错误一样)......我假设你有类似 var array = [{id:36},{id:35}];
  • length 不是函数,因此对于数组# of items 使用.length

标签: javascript arrays object dictionary


【解决方案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)

【讨论】:

    【解决方案2】:

    我认为您的问题是您将名称与 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]

    【讨论】:

      【解决方案3】:

      您可以像下面这样简单地使用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
      

      【讨论】:

        猜你喜欢
        • 2018-04-11
        • 2022-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-16
        • 2021-08-21
        • 1970-01-01
        相关资源
        最近更新 更多