尝试在数组上运行过滤器时未定义
我有一个数组。非常简单,例如:
[32652,24164]
,这两个数字都存储在
productID
中
我有一个对象,存储与每个
productID
相关联的数据
var products = {
"products": [{
"productID": "32652",
"name": "Playstation 4",
"price": "109.99"
}, {
"productID": "24164",
"name": "Xbox",
"price": "129.99"
}]
};
我尝试使用
我有以下函数:
这是不起作用的特定代码行。它应该返回结果,但它返回
因此该函数从未运行,也从未找到关联的
我整理了一个
JS Fiddle
.filter
在对象中查找关联的
name
和
price
以及
productID
>
function findProductData(productID) {
var foundProductArray = [];
var foundProduct = products.products.filter(x => x.productID === productID)[0];
console.log(foundProduct); // THIS IS COMING BACK UNDEFINED
if (foundProduct) {
// This function is never running as the filter is coming back UNDEFINED
console.log('Something found');
var foundName = foundProduct.name;
var foundPrice = foundProduct.price;
foundProductArray.push(foundName, foundPrice);
return foundProductArray;
} else {
console.log('Nothing found');
}
}
undefined
var foundProduct = products.products.filter(x => x.productID === productID)[0];
name
和
price
。
您漏掉了 parseInt。您正在尝试严格比较字符串和 int
.filter(x => x.productID === productID)[0]
将其更改为此
.filter(x => parseInt(x.productID) === productID)[0]