如果另一个数组值等于x,则获取数组值

时间:2018-12-04 07:32:02

标签: javascript arrays object properties

假设我有一个看起来像这样的JS array

"transactionProducts": [
      {
        "name": "Product A",
        "price": 100
      },
      {
        "name": "Product B",
        "price": 1000
      }
    ]

当“名称”的值包含B或产品B时,我只想返回“价格”

任何帮助将不胜感激。

谢谢

3 个答案:

答案 0 :(得分:1)

您可以使用Array.prototype.find()String.prototype.match(),如下所示:

let transactionProducts = [{
  "name": "Product A",
  "price": 100
}, {
  "name": "Product B",
  "price": 1000
}];

let price = (transactionProducts.find(x => x.name.match('B'))||{price: undefined}).price;

console.log(price);

答案 1 :(得分:1)

您可以先.filter()个数组,然后使用.map()仅获取价格:

let strArray = ['B', 'Product B'];
let data = [{ "name": "Product A", "price": 100 },{ "name": "Product B", "price": 1000 }];

let result = data.filter(({ name }) => strArray.some(s => name.includes(s)))
                 .map(({ price }) => price);

console.log(result);

答案 2 :(得分:0)

使用此功能:

function returnPrice(obj) {
    if (obj["name"].match(/B/)) {
        return obj["price"];
    }
}