Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用for循环和if语句检查两个数组_Javascript_Arrays_If Statement_For Loop - Fatal编程技术网

Javascript 使用for循环和if语句检查两个数组

Javascript 使用for循环和if语句检查两个数组,javascript,arrays,if-statement,for-loop,Javascript,Arrays,If Statement,For Loop,我正在尝试对两个数组(一个有4个对象,一个只有几个字符串)运行一个检查,其中有for循环和if语句用于一个问题集 其思想是使用for循环迭代对象数组和字符串数组中的每个元素,然后使用if语句找出匹配项,并将匹配的字符串推到新数组中。迭代所有元素后,如果存在匹配的字符串,则返回该字符串 问题在于,一旦在对象数组中找到一个匹配项,函数每天调用它,并只返回该匹配项,而不是迭代对象数组中的其余元素 var乘客=[ {姓名:[“迈克尔·杰克逊”],付费:true}, {name:[“Osama”],pa

我正在尝试对两个数组(一个有4个对象,一个只有几个字符串)运行一个检查,其中有for循环和if语句用于一个问题集

其思想是使用for循环迭代对象数组和字符串数组中的每个元素,然后使用if语句找出匹配项,并将匹配的字符串推到新数组中。迭代所有元素后,如果存在匹配的字符串,则返回该字符串

问题在于,一旦在对象数组中找到一个匹配项,函数每天调用它,并只返回该匹配项,而不是迭代对象数组中的其余元素

var乘客=[
{姓名:[“迈克尔·杰克逊”],付费:true},
{name:[“Osama”],paid:false},
{name:[“Harambe”],paid:true},
{name:[“Pepe”],paid:true},
];
var noFlyList=[“吉米”、“约翰”、“佩佩”、“奥萨马”];
功能检查禁飞(乘客、禁飞名单){
对于(变量i=0;i<0.length;i++){
对于(var j=0;j}
使用以下命令:让循环中的passengerList在每个循环上重新初始化为空数组,并且在循环中返回passengerList会在完成第一个循环后使循环中断

function checkNoFly(passengers, noFlyList) {
    var passengerList = [];
    for (var i = 0; i < passengers.length; i++) {
        for (var j = 0; j < noFlyList.length; j++) {
            if (passengers[i].name[0] == noFlyList[j]) {

                passengerList.push(passengers[i].name[0]);

            }
        }
    }
    return passengerList;
}
编辑2:对于您更新的问题,由于在第一次检查中,我们将返回单个函数
processPassenger()
的数组进行验证,因此我们可以对
checkNotPaid
函数采取类似的方法,为尚未付款的用户返回数组

function checkNotPaid(passengers) {
    var passengerNotPaid = [];
    for (var i = 0; i < passengers.length; i++) {
        if (!passengers[i].paid) {
            passengerNotPaid.push(passengers[i].name[0]);
        }
    }
    return passengerNotPaid;
}
功能检查未付款(乘客){
var passengerNotPaid=[];
对于(变量i=0;i<0.length;i++){
如果(!乘客[i].已付){
passengerNotPaid.push(乘客[i].name[0]);
}
}
未付回程费;
}

除非您想重构所有内容,否则我认为这是可以的。

您告诉它这样做:
返回passengerList在您的内部循环中。另外,您不断地重新声明变量
var passengerList=[]在内部for循环中,每次清空它

var乘客=[
{姓名:[“迈克尔·杰克逊”],付费:true},
{name:[“Osama”],paid:false},
{name:[“Harambe”],paid:true},
{name:[“Pepe”],paid:true},
];
var noFlyList=[“吉米”、“约翰”、“佩佩”、“奥萨马”];
功能检查禁飞(乘客、禁飞名单){
var passengerList=[];
对于(变量i=0;i<0.length;i++){
对于(var j=0;jlog(canWeFly?“我们能飞”:“我们不能飞”)爱死它了,在这篇文章发布3秒后,我已经投了反对票,你告诉它这样做:
返回passengerList
@connexo,是的,但是在if语句检查完整个事件中的匹配之后,我确实希望返回数组,这样我就可以在end@connexo有没有办法让passengerList作为我的checknofly函数的结果,而不在一次迭代中结束for循环,您不断地重新声明变量
var passengerList=[]在内部for循环中,每次都清空它。如果passengerlist中没有任何内容,会发生什么?函数将返回null还是false?它将返回您定义的内容:
[]
,一个空数组。由于它返回的是passengerList的空数组,您可以检查它的长度!但有了这个,所有的报酬还能用吗?因为allpaid返回的东西肯定不会是arrayOh,allpaid函数是给我的,我真的不知道wtf return(!passengers.paid)是什么意思,理论上这应该行得通,但是当我在noFlyList中没有人的情况下尝试时,console.log仍然打印,只是在checkNoFlyMy bad的地方有一个空白,我假设一个空数组将计算为falsy。由于没有,请改为检查数组长度。更新了返回行。对不起,我是js的初学者,问号是什么意思?
returna?b:c
与if(a==true){return b;}else{return c;}
相同。它被称为三元表达式。如果数组为空,则没有人在禁飞列表中,因此函数checkNoFly应返回false,以便processPassenger可以返回true,然后console.log将不会打印
function checkNotPaid(passengers) {
    var passengerNotPaid = [];
    for (var i = 0; i < passengers.length; i++) {
        if (!passengers[i].paid) {
            passengerNotPaid.push(passengers[i].name[0]);
        }
    }
    return passengerNotPaid;
}