Сплит проанализировал rss результаты - PullRequest
1 голос
/ 11 июля 2019

Я работаю над проектом по преобразованию RSS-каналов с нескольких сайтов в объединенную доску объявлений, используя rss-parser

В лентах используются разные форматы для title, и поэтому анализируемый JSON также имеет разные форматы. См. Образец трех различных форматов ниже.

title: Roundtrip: Senior Product Designer
title: Frontend Developer
title: Unreal is looking for a Product Designer

Что я хочу сделать, так это унифицировать формат заголовка / компании

  • Разделить Roundtrip: Senior Product Designer на company: Roundtrip и title: Senior Product Designer
  • Разделить Unreal is looking for a Product Designer на company: Unreal и title: Product Designer.

В настоящее время они объединены в массив в состоянии, используя

this.setState(prevState => ({
      data: this.state.data.concat(feed.items)
    }));

Но это ставит меня в положение, когда различные форматы заголовков становятся очень очевидными.

Как бы я разбил эти строки и затем объединил их в объединенный массив?

1 Ответ

1 голос
/ 11 июля 2019

Вы можете запустить карту над элементами, чтобы получить новый массив с ключами заголовка и компании.

let items = [{title:'Roundtrip: Senior Product Designer'},{title:'Frontend Developer'},{title:'Unreal is looking for a Product Designer'}]

console.log(items.map(item => {
const colonSeperated = item.title.split(':')
const phraseSeperated = item.title.split('is looking for ')
  if(colonSeperated.length == 2){
   return ({
     company:colonSeperated[0],
     title: colonSeperated[1].trim(' ')
   })
   }
 else if(phraseSeperated.length ==2){
    const phraseSeperatedTitle = 
       phraseSeperated[1].startsWith('an')? 
       phraseSeperated[1].substr(2):phraseSeperated[1].substr(1)
   return({
    company:phraseSeperated[0].trim(' '),
    title: phraseSeperatedTitle.trim(' ')
  })
}
else {
  return ({
    company:null,
    title:item.title 

   })
  }
  }
))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...