Liv*_*i17 15 javascript jquery
我在jQuery中有一个数组,我需要计算该数组中"true"字符串的数量,然后使"numOfTrue"变量等于真实字符串的数量.因此在下面的数组中,有2个"true"字符串,因此numOfTrue将等于2.
var numOfTrue;
var Answers = [ "true", "false", "false", "true", "false" ];
Run Code Online (Sandbox Code Playgroud)
我不知道如何在jQuery中循环遍历数组来计算字符串.或者甚至是必要的循环?
真实字符串的数量可以在1到5之间的任何位置变化.
Jam*_*iec 38
使用基本的老式循环:
var numOfTrue = 0;
for(var i=0;i<Answers.length;i++){
if(Answers[i] === "true")
numOfTrue++;
}
Run Code Online (Sandbox Code Playgroud)
或者,a reduce
var numOfTrue = Answers.reduce(function(p,c){
if(c === "true")
p++;
return p;
},0);
Run Code Online (Sandbox Code Playgroud)
或者a filter
var numOfTrue = Answers.filter(function(x){ return x === "true"; }).length;
Run Code Online (Sandbox Code Playgroud)
Sel*_*gam 11
你不需要这个jQuery ..一个像下面这样简单的for循环就可以了,
var numOfTrue = 0;
var Answers = [ "true", "false", "false", "true", "false" ];
for (var i = 0; i < Answers.length; i++) {
if (Answers[i] === "true") { //increment if true
numOfTrue++;
}
}
Run Code Online (Sandbox Code Playgroud)
甚至没有循环,DEMO
Answers.toString().match(/true/g).length
Run Code Online (Sandbox Code Playgroud)
它可能不是那么性能友好,但你可以使用过滤,然后使用grep计数:
var num = jQuery.grep(Answers, function (a) { return a == "true"; }).length;
Run Code Online (Sandbox Code Playgroud)
你不需要jQuery来完成这项任务.只是简单的Javascript.最好的答案由Jamiec提供,你也可以使用过滤器或减少可用于阵列的功能.
过滤功能:
var numOfTrue = Answers.filter(function(item){ return item === "true"; }).length
Run Code Online (Sandbox Code Playgroud)
在这里,您将为数组中的每个项目提供回调函数.如果此函数返回,true则此项将在返回的数组中.然后你得到这个数组的长度(["true", "true"]数组的长度是2)
减少功能:
var numOfTrue = Answers.reduce(function(counter, item){ return counter + (item === "true" ? 1 : 0); }, 0);
Run Code Online (Sandbox Code Playgroud)
Reduce函数需要为数组中的每个项执行的回调函数.数组项作为第二个参数提供,第一个参数是先前执行的回调的返回值.reduce函数的第二个参数是为第一个回调函数提供的初始值.如果你省略了这个,那么就提供了数组中的第一项(在这个例子中,如果你忘记添加0第二个参数,那么结果值将是"true0010"字符串,因为不是添加数字而是连接蜇)
| 归档时间: |
|
| 查看次数: |
34388 次 |
| 最近记录: |