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

Javascript 如果我只知道不同的属性,如何在数组中搜索对象属性值?,javascript,arrays,search,Javascript,Arrays,Search,在这个数组中,我想通过查询属性name来查找对象的id。如果我知道名称是NV,我如何获得id 我已经尝试了不同的循环和其他类似GetObject的东西,但它没有返回 { "items": [ { "id": 1, "name": "BV", }, { "id": 2, "name": "NV" } ], } 只需使用: var数据={ “项目”:[{ “id”:1, “名称”:“BV”, }, { “id

在这个数组中,我想通过查询属性
name
来查找对象的
id
。如果我知道
名称
NV
,我如何获得
id

我已经尝试了不同的循环和其他类似
GetObject
的东西,但它没有返回

{
  "items": [
    {
      "id": 1,
      "name": "BV",
    },
    {
      "id": 2,
      "name": "NV"
    }
  ],
}
只需使用:

var数据={
“项目”:[{
“id”:1,
“名称”:“BV”,
},
{
“id”:2,
“名称”:“NV”
}
],
};
console.log(data.items.find(item=>item.name==“NV”).id)
JSON编程

什么?JSON永远只是一个字符串——它是各种形式数据的字符串表示形式;没别的了

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

但在此之前,您必须修复损坏的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)
//从名称为“NV”的项目获取id
console.log(data.items.find(x=>x.name=='NV').id)//2
您可以使用数组方法:

var jsonObj={
“项目”:[
{
“id”:1,
“名称”:“BV”,
},
{
“id”:2,
“名称”:“NV”
}
]
};
var res=jsonObj.items.filter(函数(项){
return item.name==“NV”;
});

console.log(res[0].id)非常好,但是考虑到ES5和以下支持的缺失是很重要的。MDN文章确实提供了一个polyfill。什么是
GetObject
?避免不必要的花括号很好。但是
返回未定义的
是不可操作的,@torazaburo是的,我想了想,我只是觉得没有明确的返回值看起来很奇怪-可能只是我在某个地方养成的习惯。我将删除它^^
filter
迭代整个数据集,即使很早就找到了匹配项。如果它是一个大的数据集,那将是非常低效的。