2016-05-16 75 views
1

我有這樣一個對象,以便:搜索對象的相關數據

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

我需要與可變productID搜索和查找相關nameprice

我搜索剛領着我偏離軌道像.closest這是爲DOM不爲一個對象。

如何搜索productID var的對象並查找關聯的數據?

+1

可能的複製[在JavaScript對象數組查找屬性值的對象(http://stackoverflow.com/questions/7364150/find-an-object-by-property-value-in-an-array-of-javascript-objects) –

回答

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

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

var result = products.products.filter(function(obj) { 
    return obj.name == "Xbox"; 
})[0]; 

注意.filter將返回數組。如果你只需要第一場比賽,那麼這將適合你。如果你需要所有的結果的話,只是刪除的[0]

+1

很好的解決方案給你 –

+0

嘿,我有點困惑這個答案,因爲你已經硬編碼「Xbox」到位。我正在試圖找出那些數據,那麼我怎樣才能將它硬編碼到函數中呢? – user1486133

+0

@ user1486133硬編碼的「Xbox」可以是您想要的任何變量。它可以是任何事情,只是它的一個例子 – Akis

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"} 
+0

find方法爲數組中存在的每個元素執行一次回調函數(findProduct),直到找到回調函數返回真值的地方爲止。 如果找到這樣的元素,find立即返回該元素的值。否則,查找返回未定義。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find –

0
console.log(products.products.find(function(p) {return p.productID === '24164'}));