Удаление значения JSON, содержащего определенное слово в JavaScript - PullRequest
0 голосов
/ 01 мая 2018

Я использую большой API , который содержит JSON-файл информации о телешоу.

Ключ 'name' содержит информацию о госте. Большинство из них возвращаются со списком гостей, однако некоторые возвращаются как «Эпизод [x]». Например:

for (x in data){
 let title = data[x]._embedded.show.name;
 let guests = data[x].name;
 let airdate = data[x].airdate;

 switch(title){
   // ...
   case 'The Daily Show with Trevor Noah':
      p.innerHTML = airdate + " " + guests;
      noah.appendChild(p);
      console.log(airdate, guests);
      break;
   default:
      break;
 }
}

Гостевые значения возвращаются как:

Кевин Янг, Антуанетта Робертсон, генерал Майкл Хейден, Дэвид Блейн, Эпизод 63, Эпизод 64, Эпизод 65

Я бы хотел отобразить только имена и каким-то образом удалить любой экземпляр «Эпизода». У меня есть несколько идей, но я новичок в JavaScript и у меня возникли проблемы. Если для ответа на этот вопрос потребуется больше кода, я обновлю этот вопрос. Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 01 мая 2018

Как насчет использования регулярных выражений?

var pattern = /(,\s)?Episode\s\d+((,\s)?)/g;
var guests = data[x].name.replace(pattern, "");

Контрольные примеры:

var str1 = "Kevin Young, Antoinette Robertson, Gen. Michael Hayden, David Blaine, Episode 63, Episode 64, Episode 65"; 
var str2 = "Episode 63, Episode 64, Episode 65, Kevin Young, Antoinette Robertson, Gen. Michael Hayden, David Blaine"; 
var str3 = "Kevin Young, Antoinette Robertson, Gen. Michael Hayden, David Blaine";
var str4 = "Episode 63, Episode 64, Antoinette Robertson, Episode 65";
var str5 = "Episode 63, Episode 64, Episode 65";
var str6 = "Episode 63";
0 голосов
/ 01 мая 2018

Вы можете заменить все экземпляры Episode [0-9] следующим образом:

var str = "Kevin Young, Antoinette Robertson, Gen. Michael Hayden, David Blaine, Episode 63, Episode 64, Episode 65";

var newStr = str.replace(/,[ ]?Episode[ ]?[0-9]+/g, '');

console.log(newStr);

// Kevin Young, Antoinette Robertson, Gen. Michael Hayden, David Blaine
0 голосов
/ 01 мая 2018

Если вы хотите распечатать только те элементы, которые не имеют episode в заголовке, вы можете поставить оператор if() перед вашим switch(), а затем использовать continue* Оператор 1006 *, если вы столкнетесь с недопустимым элементом, чтобы пропустить его (continue скажет Javascript в основном пропустить следующий элемент).

for (x in data){
  let title = data[x]._embedded.show.name;
  let guests = data[x].name;
  let airdate = data[x].airdate;

  if (guests.substr(0, 7) === 'Episode') continue;
  // if the title starts with "Episode", no code after this line will be run for this item

  switch(title){
    // ...
    case 'The Daily Show with Trevor Noah':
      p.innerHTML = airdate + " " + guests;
      noah.appendChild(p);
      console.log(airdate, guests);
    break;
    default:
    break;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...