匹配数组属性值中的特定文本然后替换并仅输出替换值

时间:2018-05-14 13:20:33

标签: javascript reactjs ecmascript-6

我想按值过滤以下数组。 值包括' -usd'需要在没有' -usd'的情况下进行更换。 之后,我想只输出替换值!而不是马或老鼠。我怎么能这样做?

所以过滤后的数组可能如下所示:

arr = [
          {animal: 'cat', price: 150},
          {animal: 'dog', price: 350},
        ]

到目前为止,我做到了这一点:

arr = [
      {animal: 'cat-usd', price: 150},
      {animal: 'dog-usd', price: 350},
      {animal: 'horse', price: 5000},
      {animal: 'mouse', price: 50}
    ]


    var filter = arr.map((i, k) => {
      var ret = i.animal.replace(/-USD/gi, '')
      return ret;
    })

    console.log(filter)

JSBIN

2 个答案:

答案 0 :(得分:3)

您可以先对其中包含-usd的内容进行过滤,然后使用地图功能

var filter = arr.filter(i => i.animal.indexOf('-usd') >= 0).map((i, k) => {
      var ret = i.animal.replace(/-USD/gi, '')
      return ret;
    })

答案 1 :(得分:1)

i.animal.indexOf('-usd') !== -1方法中检查filter



arr = [
  {animal: 'cat-usd', price: 150},
  {animal: 'dog-usd', price: 350},
  {animal: 'horse', price: 5000},
  {animal: 'mouse', price: 50}
];

var filter = arr.filter((i, k) => {
  if(i.animal.indexOf('-usd') !== -1){
    i.animal = i.animal.replace(/-USD/gi, '');
    return i;
  }
})

console.log(filter)