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
迭代整个数据集,即使很早就找到了匹配项。如果它是一个大的数据集,那将是非常低效的。