在javascript中从数组中选择

在javascript中从数组中选择,javascript,Javascript,我是javascript新手,希望能够在两个数组中的不同字符串之间进行逻辑OR运算,例如,如果用户inputA等于array1中的字符串,如果用户inputB等于array2中的字符串,则打印这两个字符串 每个数组有4个字符串 我已经通过使用两个变量而不是数组,并使用一组if语句,找到了实现方法,如下所示: var fname = prompt(), sname = prompt() if (fname === "john" && sname === "doe") {alert(

我是javascript新手,希望能够在两个数组中的不同字符串之间进行逻辑OR运算,例如,如果用户inputA等于array1中的字符串,如果用户inputB等于array2中的字符串,则打印这两个字符串

每个数组有4个字符串

我已经通过使用两个变量而不是数组,并使用一组if语句,找到了实现方法,如下所示:

var fname = prompt(), sname = prompt()
if (fname === "john" && sname === "doe")
{alert("Hello john doe")}
else if (fname === "dennis" && sname === "richie")
{alert("Hello dennis richie")}
else if (fname === "tim" && sname === "lee")
{alert("Hello tim lee")}
else if (fname === "bill" && sname === "gates")
{alert("Hello bill gates")}
else
{alert("name not found")}
但我现在希望使用数组,而不是只有一个sname和一个fname。也许是这样的:

if ([0] in fname && [0] in sname) {alert(fname[0] + " " + sname[0])}
if ([1] in fname && [1] in sname) {alert(fname[1] + " " + sname[1])}
if ([2] in fname && [2] in sname) {alert(fname[2] + " " + sname[2])}
if ([3] in fname && [3] in sname) {alert(fname[3] + " " + sname[3])}
//each array has 4 strings
我希望尽可能地减少这种情况(就关键字和语法而言,我已经知道/很快就会知道),而不是让别人完全重写我的代码,尽管他们可能会做得更好。 也许只有一个新的关键字才能做到这一点?
我听说过indexof(),但不知道这是否合适

例如,如果您有一个数组

var a = ["doe", "richie", "lee", "gates"];
…您可以通过
a.indexOf(字符串)!=-1
或(在较新的JavaScript引擎上)
a.includes(字符串)

因此,尽可能少地改变:

var fnames=[“约翰”、“丹尼斯”、“蒂姆”、“比尔”];
var snames=[“能源部”、“里奇”、“李”、“盖茨”];
var fname=prompt(),sname=prompt();
if(fnames.indexOf(fname)!=-1&&snames.indexOf(sname)!=-1){
警报(“你好”+fname+“”+sname);
}否则{
警报(“未找到名称”);

}
例如,如果您有一个数组

var a = ["doe", "richie", "lee", "gates"];
…您可以通过
a.indexOf(字符串)!=-1
或(在较新的JavaScript引擎上)
a.includes(字符串)

因此,尽可能少地改变:

var fnames=[“约翰”、“丹尼斯”、“蒂姆”、“比尔”];
var snames=[“能源部”、“里奇”、“李”、“盖茨”];
var fname=prompt(),sname=prompt();
if(fnames.indexOf(fname)!=-1&&snames.indexOf(sname)!=-1){
警报(“你好”+fname+“”+sname);
}否则{
警报(“未找到名称”);
}
使用

var userInput=[prompt(),
提示符()
];
变量名称=[
[“约翰”、“多伊”],
[“丹尼斯”、“里奇”],
[“蒂姆”、“李”],
[“比尔”,“盖茨”]
];
var print=names.find(函数(e){
如果(e[0]==用户输入[0]&&e[1]==用户输入[1]){
返回e;
}
});
如果(打印!=未定义){
警报(“你好”+userInput[0]+“”+userInput[1]);
}否则{
警报(“未找到名称”);
}
使用

var userInput=[prompt(),
提示符()
];
变量名称=[
[“约翰”、“多伊”],
[“丹尼斯”、“里奇”],
[“蒂姆”、“李”],
[“比尔”,“盖茨”]
];
var print=names.find(函数(e){
如果(e[0]==用户输入[0]&&e[1]==用户输入[1]){
返回e;
}
});
如果(打印!=未定义){
警报(“你好”+userInput[0]+“”+userInput[1]);
}否则{
警报(“未找到名称”);

}
另一种编写方法,尽管我知道您不想完全重写代码

let makeGreeting = (greeting, error) => {
  return (fname, sname) => {
    return fNames.includes(fname) && sNames.includes(sname)
      ? greeting + ' ' + fname + ' ' + sname
      : error;
  };
};

let sayHello = makeGreeting('Hello', 'Name not found');
sayHello('john', 'doe');

另一种编写方法,尽管我知道您不想完全重写代码

let makeGreeting = (greeting, error) => {
  return (fname, sname) => {
    return fNames.includes(fname) && sNames.includes(sname)
      ? greeting + ' ' + fname + ' ' + sname
      : error;
  };
};

let sayHello = makeGreeting('Hello', 'Name not found');
sayHello('john', 'doe');

什么阵列?我看不到上面的任何数组。我不知道如何以有意义的方式添加它们。但我把它们也算进去了,但作为伪代码,我认为向我们展示数组的示例内容会有所帮助。我不确定每个数组是否只包含名字,或者只包含姓氏,或者两者都包含?一个是名字,另一个是姓氏。如果您有一个数组,例如
var a=[“doe”,“richie”,“lee”,“gates”]
,您可以通过
a.indexOf(字符串)!=-1
或(在较新的JavaScript引擎上)
a.includes(字符串)
。什么数组?我看不到上面的任何数组。我不知道如何以有意义的方式添加它们。但我把它们也算进去了,但作为伪代码,我认为向我们展示数组的示例内容会有所帮助。我不确定每个数组是否只包含名字,或者只包含姓氏,或者两者都包含?一个是名字,另一个是姓氏。如果您有一个数组,例如
var a=[“doe”,“richie”,“lee”,“gates”]
,您可以通过
a.indexOf(字符串)!=-1
或(在较新的JavaScript引擎上)
a.includes(字符串)