Lodash fp替换对象的属性

时间:2018-10-18 17:56:01

标签: javascript lodash

我尝试运行此代码以用loadsh替换对象属性中的某些字符串。

var data = [
   { name: 'test1', value: 'foo - bar' },
   { name: 'test2', value: 'foo - bar' },
   { name: 'test3', value: 'foo - bar' }
]

var newData = fp.compose(
  fp.map('value'),
  fp.replace('/-/gm', '')
)(data)

console.log(newData)
//display : [ undefined,
     undefined,
     undefined,
     undefined,
     ....
   ]

但是我想要

[
  { name: 'test1', value: 'foo  bar' },
  { name: 'test2', value: 'foo  bar' },
  { name: 'test3', value: 'foo  bar' }
]

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您要提取一个value属性值的数组,然后尝试使用正则表达式替换该数组(而不是项目)。您需要_.map()数组,并使用回调对每个元素执行替换:

var data = [
   { name: 'test1', value: 'foo - bar' },
   { name: 'test2', value: 'foo - bar' },
   { name: 'test3', value: 'foo - bar' }
]

var newData = _.map(({ value, ...rest }) => ({
  ...rest,
  value: _.replace(/\s-\s/gm, ' ', value)
}))(data)

console.log(newData);
<script src='https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)'></script>

相关问题