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

Javascript数组.some()函数不能正常工作?,javascript,arrays,Javascript,Arrays,我正在使用AngularJS执行一个web项目,但在一个控件检查中,我试图实现array.prototype.some()函数。不幸的是,它不起作用,并且总是给出错误的结果 在我试图查找错误的过程中,我尝试实现一个简单的测试用例,在该测试用例中,检查带有数字的数组的值是否大于5 测试代码如下: var arrayForTesting = [2, 5, 18]; var result = arrayForTesting.some(function (element, index, array){

我正在使用AngularJS执行一个web项目,但在一个控件检查中,我试图实现array.prototype.some()函数。不幸的是,它不起作用,并且总是给出错误的结果

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

测试代码如下:

var arrayForTesting = [2, 5, 18];

var result = arrayForTesting.some(function (element, index, array){
    element > 5;
});
一些网页暗示我需要索引和数组作为强制参数,但唯一的元素是这个测试所需的唯一参数

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

我做错了什么?

您没有返回
元素>5
比较的结果;也许您已经看过ES2015“箭头函数”,并将其简明语法与
函数
函数语法混淆(或者您可能已经看过一些CoffeeScript)

使用
函数
语法时,必须返回结果:

var arrayForTesting = [2, 5, 18];
var result = arrayForTesting.some(function (element, index, array){
    return element > 5;
//  ^^^^^^
});
如果函数退出时没有
return xyz
语句(或使用没有操作数的
return;
),则调用该函数的结果是
undefined
,这是错误的,因此
some
不会停止循环

对于ES2015,如果使用箭头函数和“简明函数体”,则返回是隐式的:

var arrayForTesting = [2, 5, 18];
var result = arrayForTesting.some(element => element > 5);
但只能使用简明的主体(无
{}
),否则您将使用
返回
,就像使用
函数
函数一样:

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

请注意,虽然尖端浏览器正在积极更新其JavaScript引擎以添加ES2015功能,但实际支持仍然很少,您可能需要Transbile来使用ES2015功能,如箭头功能。(如果您需要支持像IE10这样的旧浏览器,尤其如此。)

element>5
计算谓词,但不返回其结果。一个
return
语句在这里会有所帮助。当然我不得不做出这样的疏忽。。。啊!谢谢