如果我只知道不同的属性,如何在数组中搜索对象属性值?

时间:2017-03-30 19:15:58

标签: javascript arrays search

在这个数组中,我想通过查询属性id找到对象的name。鉴于我知道nameNV,我怎样才能获得id

我已经尝试过不同的循环和GetObject之类的其他东西,但它没有给出任何回报。

{
  "items": [
    {
      "id": 1,
      "name": "BV",
    },
    {
      "id": 2,
      "name": "NV"
    }
  ],
}

3 个答案:

答案 0 :(得分:0)

只需使用array.find



var data = {
  "items": [{
      "id": 1,
      "name": "BV",
    },
    {
      "id": 2,
      "name": "NV"
    }
  ],
};

console.log(data.items.find(item => item.name == "NV").id)




答案 1 :(得分:0)

  

用JSON编程

什么? JSON 总是只是一个字符串 - 它是各种形式数据的字符串表示;仅此而已。

如果您有一些JSON并且想要从中读取某些数据或对其进行操作,首先您需要将JSON转换为可用数据

但在此之前你必须修复你的BROKEN JSON - 你有无效的尾随逗号

var brokenjson = '{"items": [{"id": 1, "name": "BV",},{"id": 2,"name": "NV"}],}'

var goodjson   = '{"items": [{"id": 1, "name": "BV"},{"id": 2,"name": "NV"}]}'

现在您的JSON已修复,我们可以获得您正在寻找的内容

var json = '{"items": [{"id": 1, "name": "BV"},{"id": 2,"name": "NV"}]}'

var data = JSON.parse(json)

// get id from items where name is 'NV'
console.log(data.items.find(x => x.name === 'NV').id) // 2

如果您没有Array.prototype.find,请将其设为

Array.prototype.find = function find (f, context) {
  for (var i = 0; i < this.length; i++)
    if (f.call(context || window, this[i], i, this))
      return this[i]
}

答案 2 :(得分:0)

您可以使用数组filter()方法:

{{1}}