Javascript 对象中的Lodash fp replace';s属性

Javascript 对象中的Lodash fp replace';s属性,javascript,lodash,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)

我尝试运行此代码,用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' }
]

谢谢你的帮助

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

var数据=[
{name:'test1',value:'foo-bar'},
{name:'test2',value:'foo-bar'},
{name:'test3',value:'foo-bar'}
]
var newData=551;.map(({value,…rest})=>({
休息
值:\替换(/\s-\s/gm',,值)
}))(数据)
console.log(newData)

replace()
不会就地对属性进行操作,它只返回一个新字符串。我希望得到类似这样的结果,
['foo-bar','foo-bar','foo-bar']
感谢您的示例,如果我有多个替换,我可以使用compose吗?您可以在映射中组合替换状态-
{value:compose(replace1、replace2等)}