Javascript 数组中的第一个非负元素

Javascript 数组中的第一个非负元素,javascript,arrays,Javascript,Arrays,嗨,我有一个数组,看起来像: hrarray = [-9,-7,0,3,7,8] 我一直在尝试编写一个函数,用于选择数组中的第一个非负(inc.0)数并返回索引(var elemid): for(变量i=0,len=hrArray.length;i 0){ var elemid=i;//返回第一个非负元素索引 } 如果(num

嗨,我有一个数组,看起来像:

hrarray = [-9,-7,0,3,7,8]
我一直在尝试编写一个函数,用于选择数组中的第一个非负(inc.0)数并返回索引(var elemid):

for(变量i=0,len=hrArray.length;i 0){
var elemid=i;//返回第一个非负元素索引
}
如果(num<0){}

我的代码逻辑正确吗?

我没有看到您返回任何内容

您可以通过一行获得第一个非负片:

for (var i = 0, len = arr.length; i < len && arr[i] < 0; i++);

我看到的主要问题是,一旦你找到一个非负值,你就不会跳出循环。这可以通过一条语句来完成,如果您想立即退出函数,也可以通过一条语句来完成

该函数应该有点像这样:

function findNonNegative(arry) {
    for (var i = 0, len = arry.length; i < len; i++) {
        if(arry[i] >= 0)
            return i;
    }

    return -1;
}

此版本利用
for
循环的行为来测试循环中的值,并在找到所需值后中断。它还取决于这样一个事实,即如果
x
未定义的
,那么
x
总是返回false,从而确保我们不会以无限循环结束。最后一个条件表达式用于在未找到非负元素的情况下使返回值等于
-1
;可以简化为返回i
如果您同意返回值为
arry.length
,则在这种情况下。

您的代码将分配给elemid数组中最后一个非负数。试试这个:

var elemid=-1; // elemid should be declared outside the for statement
for (var i = 0, len=hrArray.length; i<len; i++) {
    if(hrArray[i] > 0) {
        elemid = i; //returns first non-negative element index
        break;
    }
}
var elemid=-1;//elemid应该在for语句之外声明
对于(变量i=0,len=hrArray.length;i 0){
elemid=i;//返回第一个非负元素索引
打破
}
}

不错!你也做了单曲for循环。我猜
length
检查是不必要的,因为当x未定义时,xarr[i]之后,当
i==length
时,它最终停止,这在大多数编程语言中都会导致超出范围的异常。太好了-如果我想输入这个,那么我可以得到相应的另一个数组(称为list),我可以将其称为list[getFirstNegative(arr)]?是的-只需确保将其粘贴到函数中即可。检查我的更新。你的更新#2得到最后一个非负元素,而不是第一个。@Mac是的,我对那一个太仓促了哈哈。好的捕获:D Bummer有一秒钟我真的认为它更好:/如果没有找到负数,这个函数会返回什么?
function findNonNegative(arry) {
    for (var i = 0, len = arry.length; i < len; i++) {
        if(arry[i] >= 0)
            return i;
    }

    return -1;
}
function findNonNegative(arry) {
    for (var i = 0; arry[i] < 0; i++);
    return i < arry.length ? i : -1;
}
var elemid=-1; // elemid should be declared outside the for statement
for (var i = 0, len=hrArray.length; i<len; i++) {
    if(hrArray[i] > 0) {
        elemid = i; //returns first non-negative element index
        break;
    }
}