我有一个像这样的对象:
var products = {"products":[
{"productID":"32652", "name":"Playstation 4", "price":"109.99"},
{"productID":"24164", "name":"Xbox", "price":"129.99"}
]};
我需要使用变量productID
进行搜索,然后找到关联的name
和price
我的搜索刚刚让我偏离.closest
这样的东西,而不是对象。
如何在对象中搜索productID
var并找到相关数据?
答案 0 :(得分:1)
您可以使用array.find
var foundProduct = products.products.find(x => x.productId === "12345")
if (foundProduct) { // foundProduct can be undefined.
var foundName = foundProduct.name
var foundPrice = foundProduct.price
} else { /* handle not found */ }
如果您处于不支持Array.find的上下文中,则可以使用更常用的.filter。
var foundProduct = products.products.filter(x => x.productId === "12345")[0]
if (foundProduct) { // foundProduct can be undefined.
var foundName = foundProduct.name
var foundPrice = foundProduct.price
} else { /* handle not found */ }
答案 1 :(得分:1)
var result = products.products.filter(function(obj) {
return obj.name == "Xbox";
})[0];
请注意.filter
将返回一个数组。如果您只是需要第一场比赛,那么这将适合您。如果您需要所有结果,请删除[0]
答案 2 :(得分:0)
var products = {"products":[
{"productID":"32652", "name":"Playstation 4", "price":"109.99"},
{"productID":"24164", "name":"Xbox", "price":"129.99"}
]};
function findProduct(product) {
return product.productID === '24164';
}
console.log(products.products.find(findProduct)); //{productID: "24164", name: "Xbox", price: "129.99"}
答案 3 :(得分:0)
console.log(products.products.find(function(p) {return p.productID === '24164'}));