Lodash fp replace в свойстве объекта - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь запустить этот код для замены некоторой строки в свойстве объекта на 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 голосов
/ 18 октября 2018

Вы извлекаете массив значений свойства 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>
...