在对象中搜索关联数据

时间:2016-05-16 22:24:19

标签: javascript arrays json

我有一个像这样的对象:

var products = {"products":[
    {"productID":"32652", "name":"Playstation 4", "price":"109.99"},
    {"productID":"24164", "name":"Xbox", "price":"129.99"}
]};

我需要使用变量productID进行搜索,然后找到关联的nameprice

我的搜索刚刚让我偏离.closest这样的东西,而不是对象。

如何在对象中搜索productID var并找到相关数据?

4 个答案:

答案 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)

您可以使用Array.prototype.filter()

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'}));