删除JavaScript中包含特定单词的JSON值
我正在使用一个包含电视节目信息的JSON文件的 键“name”包含来宾信息。他们中的大多数人都会带着客人名单回来,但也有一些人会以“插曲[x]”的形式回来。例如:删除JavaScript中包含特定单词的JSON值,javascript,html,json,regex,parsing,Javascript,Html,Json,Regex,Parsing,我正在使用一个包含电视节目信息的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 Sho
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新手,遇到了一些麻烦。如果需要更多代码来回答此问题,我将更新此问题。提前感谢如果您只想打印标题中没有
插曲的项目,您可以在开关()之前放置If()
语句,然后在遇到无效项目时使用语句跳过它(continue
将告诉Javascript基本上跳到下一个项目)
使用正则表达式怎么样
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-9]
的所有实例,如下所示:
var str=“凯文·杨,安托瓦内特·罗伯逊,迈克尔·海登将军,大卫·布莱恩,第63集,第64集,第65集”;
var newStr=str.replace(/,[]?插曲[]?[0-9]+/g');
console.log(newStr);
//凯文·杨,安托瓦内特·罗伯逊,迈克尔·海登将军,大卫·布莱恩
如果回答这个问题需要代码,我会用必要的信息更新这个问题。
是的,如果你想帮助调试问题,一定要发布你尝试过的代码。当然,我只是更新了我的问题,我不认为这是一个开关(标题){
是通过JSON调用返回的…而不是有效的JSONfunction@AmrAly替换会删除“插曲”,但我想删除包含“插曲”的整个值。否则,插曲编号仍然存在。不知道是否有某种“包含”方法可以删除所有实例谢谢!这非常有效。如果声明应该以“来宾”而不是“标题”开头,但这确实有效。
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";