Javascript 在对象中搜索关联数据

Javascript 在对象中搜索关联数据,javascript,arrays,json,Javascript,Arrays,Json,我有一个这样的目标: var products = {"products":[ {"productID":"32652", "name":"Playstation 4", "price":"109.99"}, {"productID":"24164", "name":"Xbox", "price":"129.99"} ]}; 我需要搜索变量productID,并找到相关的name和price 我的搜索结果让我偏离了正轨,比如.closest,它是针对DOM的,而不是针对对象的

我有一个这样的目标:

var products = {"products":[
    {"productID":"32652", "name":"Playstation 4", "price":"109.99"},
    {"productID":"24164", "name":"Xbox", "price":"129.99"}
]};
我需要搜索变量
productID
,并找到相关的
name
price

我的搜索结果让我偏离了正轨,比如
.closest
,它是针对DOM的,而不是针对对象的

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

您可以使用

如果您所处的上下文尚不支持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 */ }
你可以用


请注意,
.filter
将返回一个数组。如果你只需要第一场比赛,那么这将为你工作。如果您需要所有结果,那么只需删除find方法的
[0]

可能的重复项即可对数组中的每个元素执行一次回调函数(findProduct),直到找到回调返回真值的元素为止。如果找到这样的元素,find将立即返回该元素的值。否则,find返回undefined。嘿,这个答案让我有点困惑,因为你已经把“Xbox”硬编码到位了。我正在试图找出这些数据,那么我如何将其硬编码到函数中呢?@user1486133硬编码的“Xbox”可以是您想要的任何变量。它可以是任何东西这只是一个如何做到这一点的例子
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"}
var result = products.products.filter(function(obj) {
  return obj.name == "Xbox";
})[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"}
console.log(products.products.find(function(p) {return p.productID === '24164'}));