GVKun编程网logo

如何计算数组中某些元素的数量?(如何计算数组中某些元素的数量和次数)

11

对于想了解如何计算数组中某些元素的数量?的读者,本文将是一篇不可错过的文章,我们将详细介绍如何计算数组中某些元素的数量和次数,并且为您提供关于c–快速计算数组中零值字节的数量、javascript–如

对于想了解如何计算数组中某些元素的数量?的读者,本文将是一篇不可错过的文章,我们将详细介绍如何计算数组中某些元素的数量和次数,并且为您提供关于c – 快速计算数组中零值字节的数量、javascript – 如何确定数组中已定义元素的数量?、javascript – 如何计算所选元素的数量?、js计算数组中某个元素重复出现的个数(一)的有价值信息。

本文目录一览:

如何计算数组中某些元素的数量?(如何计算数组中某些元素的数量和次数)

如何计算数组中某些元素的数量?(如何计算数组中某些元素的数量和次数)

如果我有一个数组[1, 2, 3, 5, 2, 8, 9,2],我想检查2数组中有多少个。在JavaScript中不使用循环循环的最优雅的方法是什么for

答案1

小编典典

很简单:

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

c – 快速计算数组中零值字节的数量

c – 快速计算数组中零值字节的数量

什么是计算大型连续数组中零值字节数的快速方法? (或者相反,非零字节的数量.)大,我的意思是216字节或更大.数组的位置和长度可以包含任何字节对齐.

天真的方式:

int countZeroBytes(byte[] values,int length)
{
    int zeroCount = 0;
    for (int i = 0; i < length; ++i)
        if (!values[i])
            ++zeroCount;

    return zeroCount;
}

对于我的问题,我通常只维护zeroCount并根据值的特定更改来更新它.但是,我希望在对值进行任意批量更改之后,有一种快速,通用的方法来重新计算zeroCount.我确信有一种比较快速的方法可以更快地实现这一点,但是,唉,我只是一个新手twiddler.

编辑:有些人询问数据的性质是零检查,所以我将描述它. (不过,如果解决方案仍然普遍,那就太好了.)

基本上,设想由voxels(例如Minecraft)组成的世界,其中程序生成的地形被分隔成立方块,或者有效地将页面索引为三维阵列.每个体素被飞加权作为对应于独特材料(空气,石头,水等)的唯一字节.许多块仅包含空气或水,而其他块包含大量2-4种体素(污垢,沙子等)的不同组合,有效地2-10%的体素是随机异常值.大量存在的体素往往沿着每个轴高度聚集.

但是,似乎零字节计数方法在许多不相关的场景中是有用的.因此,需要一般的解决方案.

解决方法

我已经使用了这个OpenMP实现,它可以利用每个处理器的本地缓存中的数组实际并行读取它.
nzeros_total = 0;
#pragma omp parallel for reduction(+:nzeros_total)
    for (i=0;i<NDATA;i++)
    {
        if (v[i]==0)
            nzeros_totaL++;
    }

一个快速的基准测试,包括运行1000次for循环和一个朴素的实现(与问题中写的OP相同)与OpenMP实现相比,运行1000次,两个方法的最佳时间,数组为65536具有零值元素概率为50%的整数,在QuadCore cpu上使用Windows 7,并使用VStudio 2012 Ultimate编译,产生以下数字:

DEBUG               RELEASE
Naive method:  580 microseconds.   341 microseconds.
OpenMP method: 159 microseconds.    99 microseconds.

注意:我已经尝试了#pragma循环(hint_parallel(4))但是显然,这并没有导致天真版本执行得更好所以我的猜测是编译器已经应用了这个优化,或者它不能适用.此外,#pragma loop(no_vector)并没有导致天真版本的性能更差.

javascript – 如何确定数组中已定义元素的数量?

javascript – 如何确定数组中已定义元素的数量?

如果我在 Javascript中有一个偶尔填充的数组,我该如何确定数组中非空元素的数量?

例如:

var zipCodes = [];
zipCodes[10006] = 'New York,NY';
zipCodes[90210] = 'Los Angeles,CA';

zipCodes.length在这里返回90,211,我真的不想循环通过90,209个nothings来找出我有两个有效元素.使用for-in循环意味着处理任何可能冒泡原型链并试图弄清楚它是否是该数组的一部分.

有没有办法,鉴于上面定义的数组,我可以提取“2”作为已定义元素的数量?

解决方法

您需要一个具有键值对的对象(类似于关联数组/哈希表)而不是数组:

var zipCodes = {};
zipCodes[10006] = 'New York,CA';


for(var zipCode in zipCodes) {
    if(zipCodes.hasOwnProperty(zipCode)) {//makes sure prototypes aren't taken into account

    }
}

编辑:
或者您可以将对象存储在数组中,如下所示:

var zipCodes = [];
zipCodes.push({10006:'New York,NY'});
zipCodes.push({90210: 'Los Angeles,CA'});

//zipCodes.length = 2

javascript – 如何计算所选元素的数量?

javascript – 如何计算所选元素的数量?

我有很多使用相同类名的元素.现在我需要计算所选项目的数量.

对于例如像这样的东西:(但是这个例子不能正常工作)

$("#btn").click(function(){
  if($(".necessarily").val() == ''){
    $(".necessarily").css('border','1px solid red');
  }
     // also I want the number of input.necessarily which are empty
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <form name="frm" action="#">
        <input name="first-name"type="text" /><br><br>
        <input name="last-name"type="text" /><br><br>
        <input name="email"type="email" /><br><br>
        <input name="password"type="password" /><br><br>
        <input name="address"type="text" /><br><br>
        <input name="btn" id="btn"  type="submit" value="Register" />
    </form>

现在我想要那些空的输入数……,我该如何计算呢?

解决方法

.val()方法返回集合中第一个元素的.value属性.您可以使用.filter()方法过滤空输入,并读取已过滤集合的.length属性:

var $empty = $(".necessarily").filter(function() {
   // you can use the `$.trim` method for trimming whitespaces
   // return $.trim(this.value).length === 0; 
   return this.value.length === 0;
});

if ( $empty.length > 0 ) {

}

如果要为空字段添加边框,可以声明CSS类并使用.removeClass和.addClass方法:

CSS:

.red_border {
   border: 1px solid red;
}

JavaScript的:

var $empty = $(".necessarily").removeClass('red_border').filter(function() {
   return this.value.length === 0;
}).addClass('red_border');

js计算数组中某个元素重复出现的个数(一)

js计算数组中某个元素重复出现的个数(一)

let list = [
  {name:"1000积分",serialNumber:6},
  {name:"500积分",serialNumber:7},
  {name:"50积分",serialNumber:8},
  {name:"50积分",serialNumber:8},   {name:"50积分",serialNumber:8} ];

怎么把list数组转化为

[
  {title:"1000积分",num:1},
  {title:"500积分",num:1},
  {title:"50积分",num:3}
]
//num:serialNumber相同的元素重复次数

首先要先获取同样的serialNumber的重复次数

//先根据所有的title组合成一个数组
let titleList = list.map(item => {
return item.name
})

//获得["1000积分", "500积分", "50积分", "50积分", "50积分"]


然后有两种方法将titleList 转化
// 不用reduce时:
function getRepeatNum(){ 
        var obj = {}; 
        for(var i= 0, l = titleList.length; i< l; i++){ 
            var item = arr[i]; 
            obj[item] = (obj[item] +1 ) || 1; } return obj; } //用reduce时: //reduce:计算数组元素相加后的总和
//reduce方法接受两个参数,第一个是函数,第二个是初始值 function getRepeatNum(){ return titleList.reduce(function(prev,next){ prev[next] = (prev[next] + 1) || 1; return prev; },{}); } console.log(getRepeatNum());//获得{1000积分: 1, 500积分: 1, 50积分: 3}

let myObj = this.getRepeatNum2(titleList),
winningList = []
for(let i in myObj){
let obj = {
title:i,
num:myObj[i]
}
winningList.push(obj)
}
console.log(winningList)
//[{"title":"1000积分","num":1},{"title":"500积分","num":1},{"title":"50积分","num":3}]

 

关于如何计算数组中某些元素的数量?如何计算数组中某些元素的数量和次数的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于c – 快速计算数组中零值字节的数量、javascript – 如何确定数组中已定义元素的数量?、javascript – 如何计算所选元素的数量?、js计算数组中某个元素重复出现的个数(一)等相关知识的信息别忘了在本站进行查找喔。

本文标签: