Javascript array.some()函数不能正常工作吗?

时间:2015-10-16 08:33:48

标签: javascript arrays

我正在使用AngularJS进行一个Web项目,但在其中一个控件检查中,我正在尝试实现array.prototype.some() - 函数。不幸的是,它不起作用,总是给出错误。

在尝试查找错误时,我尝试实现一个简单的测试用例,其中检查带有数字的数组的值是否大于5。

测试代码是这样的:

var arrayForTesting = [2, 5, 18];

var result = arrayForTesting.some(function (element, index, array){
    element > 5;
});

有些网页暗示我需要索引和数组作为必需参数,但只有元素才是我测试所需的唯一参数。

然而,结果仍然是假的,但至少有一个元素高于5。

我做错了什么?

1 个答案:

答案 0 :(得分:8)

你不是返回 element > 5比较的结果;也许你已经看过ES2015的“箭头函数”,并且他们的简洁语法与function函数语法相混淆(或者你可能已经看过一些CoffeeScript)。

使用function语法时,您必须返回结果:

var arrayForTesting = [2, 5, 18];
var result = arrayForTesting.some(function (element, index, array){
    return element > 5;
//  ^^^^^^
});

如果函数在没有return xyz语句的情况下退出(或使用没有操作数的return;),则调用该函数的结果为undefined,这是假的,因此{{1} }不会停止循环。

使用ES2015,如果使用箭头功能和“简洁的函数体”,则返回是隐含的:

some

但只有简洁的机构(没有var arrayForTesting = [2, 5, 18]; var result = arrayForTesting.some(element => element > 5); ),否则您使用{}return函数一样:

function

请注意,虽然尖端浏览器正在积极更新其JavaScript引擎以添加ES2015功能,但实际支持仍然很少,您可能需要转换为使用箭头功能等ES2015功能。 (尤其是如果您需要支持IE10等旧版浏览器。)