我有一个数组:

[1, 2, 3, 5, 2, 8, 9, 2]

我想知道数组中有多少个2。

在JavaScript中,没有for循环的最优雅的方法是什么?


当前回答

现代JavaScript:

请注意,在JavaScript (JS)中进行比较时,应该始终使用三重=== =。三重等号确保JS的比较在其他语言中表现得像双等号==(有一个例外,见下文)。下面的解决方案展示了如何用函数的方式解决这个问题,这将确保你永远不会出现越界错误:

// Let has local scope
let array = [1, 2, 3, 5, 2, 8, 9, 2]

// Functional filter with an Arrow function
// Filter all elements equal to 2 and return the length (count)
array.filter(x => x === 2).length  // -> 3

JavaScript中的匿名箭头函数(lambda函数):

(x) => {
   const k = 2
   return k * x
}

对于单个输入,可以简化为这种简洁的形式:

x => 2 * x

这里隐含了返回。

在JS中总是使用三重等号:=== =进行比较,除了检查可空性:if (something == null){},因为它包括检查未定义,如果你只使用双等号,就像在这种情况下。

其他回答

var arrayCount = [1,2,3,2,5,6,2,8]; Var co = 0; 函数findElement () { arrayCount。Find(函数(值,索引){ If (value == 2) 公司+ +; }); Console.log ('found' + ' ' + co + '元素值为2'); }

我会这样做:

var arraycount = [1,2,3,4,5,6,7,8]; 函数 countarr(){ 变量 dd = 0; arrayCount.forEach( function(s){ DD++; }); 控制台.log(dd); }

我相信你们在寻找的是功能方法

    const arr = ['a', 'a', 'b', 'g', 'a', 'e'];
    const count = arr.filter(elem => elem === 'a').length;
    console.log(count); // Prints 3

Elem === 'a'是条件,用你自己的替换它。

这是javascript中的一行代码。

使用地图。在数组中找到匹配的值(v === 2),返回一个由1和0组成的数组。 使用减少。将该数组的所有值相加,得到所找到的总数。

[1, 2, 3, 5, 2, 8, 9, 2]
  .map(function(v) {
    return v === 2 ? 1 : 0;
  })
  .reduce((a, b) => a + b, 0);

结果是3。

你可以使用内置函数Array.filter()

数组中。Filter (x => x === element).length;

Var arr = [1,2,3,5,2,8,9,2]; //数一下arr中有多少个2 Var计数= arr。Filter (x => x == 2).length; console.log(数);

非常简单:

var count = 0;
for(var i = 0; i < array.length; ++i){
    if(array[i] == 2)
        count++;
}