Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.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/0/vba/16.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函数没有返回true?_Javascript - Fatal编程技术网

为什么我的javascript函数没有返回true?

为什么我的javascript函数没有返回true?,javascript,Javascript,我有一个javascript函数: function isInSupplier(idsupplier) { suppliers.forEach(function(object) { if (object._id == idsupplier) { console.log("TRUE"); return true; }; }); return false; 我有一个产品清单,每个都有一个供应商。

我有一个javascript函数:

function isInSupplier(idsupplier) {
    suppliers.forEach(function(object) {
        if (object._id == idsupplier) {
            console.log("TRUE");
            return true;
        };
    });
    return false;
我有一个产品清单,每个都有一个供应商。我想列出唯一的供应商,因此如果供应商已经在我的供应商列表中,我不会添加新的供应商

以下是我的功能:

    console.log(isInSupplier(('<s:property value="supplier.id" />')));
    if (!isInSupplier(('<s:property value="supplier.id" />'))) {
        suppliers.push(new supplier(
                ('<s:property value="supplier.id" />'),
                ('<s:property value="supplier.supplier_name" />'),
                ('<s:property value="supplier.type" />'),
                ('<s:property value="supplier.phone" />')
        ));
    }
console.log(isInSupplier(“”));
如果(!isInSupplier((“”))){
供应商。推送(新供应商)(
(''),
(''),
(''),
('')
));
}
还有一点我不明白:即使控制台正确地记录了“TRUE”,函数也不会返回TRUE。在我的第二段代码中,我有另一个控制台日志;这总是错误的


我缺少的是什么?

您从传递给
forEach
的函数返回true,而不是从
isInSupplier
您从传递给
forEach
的函数返回true,而不是从
isInSupplier
forEach
方法将函数作为参数。如果你返回到内部,你就不会从外部函数返回。您可以使用
Array.prototype.some
使其工作:

function isInSupplier(idsupplier) {
    return suppliers.some(function (object) {
        return object._id == idsupplier;
    });
}
如果您的环境支持ES6,则可以使用箭头功能:

function isInSupplier(idsupplier) {
    return suppliers.some(o => o._id == idsupplier);
}

forEach
方法将函数作为参数。如果你返回到内部,你就不会从外部函数返回。您可以使用
Array.prototype.some
使其工作:

function isInSupplier(idsupplier) {
    return suppliers.some(function (object) {
        return object._id == idsupplier;
    });
}
如果您的环境支持ES6,则可以使用箭头功能:

function isInSupplier(idsupplier) {
    return suppliers.some(o => o._id == idsupplier);
}
请换成

some()
方法测试数组中的某个元素是否通过了所提供函数实现的测试

或者没有控制台输出

function isInSupplier(idsupplier) {
    return suppliers.some(function(object) {
        return object._id == idsupplier;
    });
}
请换成

some()
方法测试数组中的某个元素是否通过了所提供函数实现的测试

或者没有控制台输出

function isInSupplier(idsupplier) {
    return suppliers.some(function(object) {
        return object._id == idsupplier;
    });
}

您的
返回true
返回传递给
forEach
的函数,而不是
isInSupplier
。相反,您可以使用:


或者在Nina的回答中使用可能更好(我不记得名称,所以求助于
findIndex
)。

您的
返回true
返回传递给
forEach
的函数,而不是
isInSupplier
。相反,您可以使用:


或者像尼娜的回答中那样使用可能更好(我记不起名字了,所以求助于
findIndex
)。

你只在结束后返回。即forEach。您的外部函数只返回false,这就是您看到的,您只在forEach()函数中返回true。您想知道的函数总是返回False,而您只从闭包返回。即forEach。您的外部函数只返回false,这就是您看到的,您只在forEach()函数中返回true。你想知道的函数总是返回falseAh yes
some
是我要找的,但我永远记不起JS高阶函数名。啊yes
some
是我要找的,但我永远记不起JS高阶函数名。