Javascript 寻找演员

Javascript 寻找演员,javascript,for-loop,innerhtml,Javascript,For Loop,Innerhtml,我正在制作一个函数来查找我搜索的演员制作的所有电影,这些电影在js文件中,如下所示: var filmlist=[ {“标题”:“杀手之吻”,“演员”:“弗兰克·西尔维拉、杰米·史密斯、艾琳·凯恩、杰瑞·贾勒特”} ]; var a=document.getElementById(“胶片”); 函数findActors(){ var x=document.getElementById(“actor”).value; var y=document.getElementById(“actorfil

我正在制作一个函数来查找我搜索的演员制作的所有电影,这些电影在js文件中,如下所示:

var filmlist=[
{“标题”:“杀手之吻”,“演员”:“弗兰克·西尔维拉、杰米·史密斯、艾琳·凯恩、杰瑞·贾勒特”}
];
var a=document.getElementById(“胶片”);
函数findActors(){
var x=document.getElementById(“actor”).value;
var y=document.getElementById(“actorfilm”);
a、 innerHTML=“与此演员合作的电影:”

对于(var i=0;i您当前正在用最后一个电影标题覆盖
y.innerHTML
。要附加到innerHTML,请使用:

y.innerHTML+=(电影列表[i].Title+“
”)

您的indexOf有一个问题,在另一个答案中提到,可以通过

if(filmlist[i].Actors.indexOf(x)){

最后,您的HTML错误地引用了js函数,应该是:


ActorButton

您当前正在用最后一个电影标题覆盖
y.innerHTML
。要附加到innerHTML,请使用:

y.innerHTML+=(电影列表[i].Title+“
”)

您的indexOf有一个问题,在另一个答案中提到,可以通过

if(filmlist[i].Actors.indexOf(x)){

最后,您的HTML错误地引用了js函数,应该是:


ActorButton

您就快到了,只是您的
if
条件需要反转

if (filmlist[i].Actors.indexOf(x) )
您正在检查输入值内的参与者超集,而不是反过来检查

你可以通过这样做使它更精确

var filteredFilms = filmlist.filter( s => s.Actors.indexOf(x) != -1 );
var output = filteredFilms.map( s => s.Title ).join( "<br/>" );
var filteredFilms=filmlist.filter(s=>s.Actors.indexOf(x)!=-1);
var output=filteredFilms.map(s=>s.Title.join(“
”);
演示

var filmlist=[{
“标题”:“杀手之吻”,
“演员”:“弗兰克·西尔维拉、杰米·史密斯、艾琳·凯恩、杰瑞·贾勒特”
}];
var a=document.getElementById(“胶片”);
函数findActors(){
var x=document.getElementById(“actor”).value;
var y=document.getElementById(“actorfilm”);
a、 innerHTML=“与此演员合作的电影:”
var filteredFilms=filmlist.filter(s=>s.Actors.indexOf(x)!=-1);
y、 innerHTML=filteredFilms.map(s=>s.Title).join(“
”); }

弗兰克·斯尔维拉
阿克特布顿


您就快到了,只是您的
if
状况需要逆转

if (filmlist[i].Actors.indexOf(x) )
您正在检查输入值内的参与者超集,而不是反过来检查

你可以通过这样做使它更精确

var filteredFilms = filmlist.filter( s => s.Actors.indexOf(x) != -1 );
var output = filteredFilms.map( s => s.Title ).join( "<br/>" );
var filteredFilms=filmlist.filter(s=>s.Actors.indexOf(x)!=-1);
var output=filteredFilms.map(s=>s.Title.join(“
”);
演示

var filmlist=[{
“标题”:“杀手之吻”,
“演员”:“弗兰克·西尔维拉、杰米·史密斯、艾琳·凯恩、杰瑞·贾勒特”
}];
var a=document.getElementById(“胶片”);
函数findActors(){
var x=document.getElementById(“actor”).value;
var y=document.getElementById(“actorfilm”);
a、 innerHTML=“与此演员合作的电影:”
var filteredFilms=filmlist.filter(s=>s.Actors.indexOf(x)!=-1);
y、 innerHTML=filteredFilms.map(s=>s.Title).join(“
”); }

弗兰克·斯尔维拉
阿克特布顿



您在文本区域中输入了什么?您在html中写入了
findActor
,在JS中写入了
findActor
,请参见使用代码的工作示例。您在文本区域中输入了什么?您在html中写入了
findActor
,在JS中写入了
findActor
,请参见使用代码的工作示例。Whi你是对的,这不是OP面临的问题。正如@Adriani6所提到的,最初的问题是你的if语句比较字符串的indexOf,而不是数组。现在检查我的答案,或者gurcinder372的回答是的,我更改了这两个答案,仍然没有结果检查你原始帖子上的评论,似乎是输入了
findActor()
在HTML中,当JS函数为
findActors()时
啊,很抱歉,这是一个打字错误,很好地发现了!虽然你是正确的,但这不是OP面临的问题。正如@Adriani6所提到的,最初的问题是你的if语句比较字符串上的indexOf,而不是数组。现在检查我的答案,或者检查gurcinder372的答案是的。是的,我更改了这两个,仍然没有结果。检查你原来帖子上的评论,似乎是正确的当JS函数为
findActors()时,在HTML中输入
findActor()
啊,很抱歉,这是一个打字错误,很好地发现了!仍然无法通过反转索引:/@GustavBangNielsen打印出来检查演示。我将for和if循环更改为您的解决方案,并进行了反转索引,仍然没有结果。仍然无法通过反转索引:/@GustavBangNielsen打印出来检查演示。我将for和if循环更改为你的解决方案和索引做了颠倒,还是没有结果。。