开发者问题收集

尝试在数组上运行过滤器时未定义

2016-05-17
57

我有一个数组。非常简单,例如: [32652,24164] ,这两个数字都存储在 productID

我有一个对象,存储与每个 productID 相关联的数据

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

我尝试使用 .filter 在对象中查找关联的 nameprice 以及 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];

因此该函数从未运行,也从未找到关联的 nameprice

我整理了一个 JS Fiddle

1个回答

您漏掉了 parseInt。您正在尝试严格比较字符串和 int

 .filter(x => x.productID === productID)[0]

将其更改为此

.filter(x => parseInt(x.productID) === productID)[0]
Bhargav Ponnapalli
2016-05-17