为什么我的javascript函数没有返回true?
我有一个javascript函数:为什么我的javascript函数没有返回true?,javascript,Javascript,我有一个javascript函数: function isInSupplier(idsupplier) { suppliers.forEach(function(object) { if (object._id == idsupplier) { console.log("TRUE"); return true; }; }); return false; 我有一个产品清单,每个都有一个供应商。
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 yessome
是我要找的,但我永远记不起JS高阶函数名。啊yessome
是我要找的,但我永远记不起JS高阶函数名。