javascript - 如何检查数组是否至少有一个负值?

时间:2017-06-13 21:13:46

标签: javascript arrays

我创建了一个整数数组,想知道它是否有一个或多个负值。

我不想创建一个for()循环并检查数组中的每个元素是正数还是负数,因为我只想返回一次(例如:我不想让我的函数进入"返回false;"一百万次)。

我考虑的一个选项是将数组中的每个值乘以其倒数的绝对值,因此我得到一个1或-1的数组(如果值为0,则为未定义)然后我可以将所有值中的所有值相加第二个数组,看它是否等于数组的长度。

然而,这种方法的问题在于它不占1/0,而且也很繁琐。我想知道是否有更快的方法来检查数组是否包含至少一个负值。

- 来自初学JavaScript程序员

4 个答案:

答案 0 :(得分:7)

如果数组中的项与给定条件匹配,您可以利用 -- profiterole stats TOT INH IND 99.9 99.9 .1 MAIN MAIN (0) 99.9 99.9 .1 MAIN MAIN (0) 99.9 99.9 34.0 Main CAF (0) 65.9 65.9 - Data.Data.Lens fromOracle (35) 65.9 65.9 - Data.Data.Lens hitTest (0) 65.9 65.9 - Data.Data.Lens hitTest.\ (35) 65.9 65.9 - Data.Data.Lens readCacheFollower (30) 65.9 65.9 - Data.Data.Lens readCacheFollower.\ (30) 65.9 65.9 - Data.Data.Lens insertHitMap (1) 65.9 65.9 - Data.Data.Lens insertHitMap.populate (1) 65.9 65.9 56.4 Data.Data.Lens insertHitMap.populate.f (1824891) 2.3 2.3 2.3 Data.HashMap.Base clone16 (2682671) 2.1 2.1 2.1 Data.HashMap.Base hash (6204631) 1.7 1.7 .4 Data.HashMap.Array copy (1620382) 1.3 1.3 1.3 Data.HashMap.Array copy.\ (1620382) 1.1 1.1 1.1 Data.Data.Lens insertHitMap.populate.fs (2189870) .9 .9 .9 Bound.Var gfoldl (364976) .5 .5 .5 Data.HashMap.Array new_ (810191) .5 .5 .5 Bound.Var gunfold (364976) .3 .3 .3 Data.HashMap.Base sparseIndex (3620621) .2 .2 .2 Bound.Scope gfoldl (182489) 返回true或false。如果条件与元素匹配,它也会停止检查剩余值:

Array.prototype.some

答案 1 :(得分:0)

为什么在数组中找到最小值? 见

JavaScript: min & max Array values?

Math.min(...array) 

答案 2 :(得分:0)

这只会返回1个值,并在找到负数后立即中断。

function doesArrayContainNegative(array){

  //if negative is found return true (breaking loop)
  for(var arr of array){
  	if(arr < 0) return true;
  }
  
 //if no elements are negative return false
  return false;
}

var array1 = [9, -3, 5, 8]
console.log(doesArrayContainNegative(array1))

答案 3 :(得分:-1)

for循环需要一直返回false的问题是什么?

enumerateChildNodes

如果你想得到负数的数量

fucntion containsNegative(myArray)
    for(var i = 0; i < myArray.length(); i++)
    {
        if(myArray[i] < 0){
            return true;
        }
    }
    return false;
}