我在jQuery中有一个数组,我需要计算该数组中“true”字符串的数量,然后使“numOfTrue”变量等于真实字符串的数量。所以在下面的数组中,有2个“true”字符串,所以numOfTrue将等于2.
var numOfTrue;
var Answers = [ "true", "false", "false", "true", "false" ];
我不知道如何在jQuery中循环遍历数组以计算字符串。或者甚至是必要的循环?
真实字符串的数量可能会在1到5之间的任何位置发生变化。
答案 0 :(得分:35)
使用基本的老式循环:
var numOfTrue = 0;
for(var i=0;i<Answers.length;i++){
if(Answers[i] === "true")
numOfTrue++;
}
或reduce
var numOfTrue = Answers.reduce(function(p,c){
if(c === "true")
p++;
return p;
},0);
或filter
var numOfTrue = Answers.filter(function(x){ return x === "true"; }).length;
答案 1 :(得分: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++;
}
}
甚至没有循环,DEMO
Answers.toString().match(/true/g).length
答案 2 :(得分:7)
它可能不那么友好,但您可以使用过滤,然后使用grep计算:
var num = jQuery.grep(Answers, function (a) { return a == "true"; }).length;
答案 3 :(得分:7)
你不需要jQuery来完成这项任务。只是简单的Javascript。最佳答案由Jamiec提供,您也可以使用可用于数组的filter或reduce函数。
过滤功能:
var numOfTrue = Answers.filter(function(item){ return item === "true"; }).length
这里提供的是对数组中每个项目执行的回调函数。如果此函数返回true
,那么此项将在返回的数组中。然后你得到这个数组的长度(["true", "true"]
数组的长度为2
)
减少功能
var numOfTrue = Answers.reduce(function(counter, item){ return counter + (item === "true" ? 1 : 0); }, 0);
Reduce函数需要为数组中的每个项执行的回调函数。数组项作为第二个参数提供,第一个参数是先前执行的回调的返回值。 reduce函数的第二个参数是为第一个回调函数提供的初始值。如果省略这个,则提供数组中的第一项(在此示例中,如果您忘记添加0
作为第二个参数,那么结果值将为"true0010"
字符串,因为而不是添加数字将串联叮咬)
答案 4 :(得分:2)
您还可以使用regular expressions和String.prototype.match()
代码:
const Answers = [ "true", "false", "false", "true", "false" ];
const count = Answers.toString().match(/true/g).length;
console.log(count)
&#13;
答案 5 :(得分:1)
var numOfTrue = 0;
for(var i = 0, len = Answers.length;i < len; i++){
if(Answers[i] === "true"){
numOfTrue++;
}
}
答案 6 :(得分:1)
var numOfTrue =0;
$.each(Answers,function(index,value){
if(value =="true")
{
numOfTrue++;
}
});
答案 7 :(得分:1)
如果你确实想使用jQuery(和tbh,你不应该这样做),这将有效:
var numOfTrue;
var Answers = [ "true", "false", "false", "true", "false" ];
$.each(Answers, function(i, item) {
if (item == "true")
numOfTrue++;
});
等效的Javascript是:
var numOfTrue;
var Answers = [ "true", "false", "false", "true", "false" ];
for (var i = 0; i < Answers.length; i++) {
if (answers[i] == "true")
numOfTrue++;
});
答案 8 :(得分:1)
var numOfTrue;
var Answers = [ "true", "false", "false", "true", "false" ];
var i = 0;
$.each(Answers, function(index, value){
if(value == "true")
{
i++;
}
});
alert(i);
答案 9 :(得分:1)
arr = [true,true,true,false,false]
n = arr.join('').split("true").length-1
答案 10 :(得分:0)
您可以使用jQuery.each迭代列表,例如:
var Answers = [ "true", "false", "false", "true", "false" ];
var numOfTrue = countTrue(Answers);
alert(numOfTrue);
function countTrue(Answers){
var numOfTrue = 0;
jQuery.each( Answers, function(i, value) {
if (value === "true")
numOfTrue++;
});
return numOfTrue;
}
如果你想玩它,这是一个jsfiddle: http://jsfiddle.net/HHrwc/
答案 11 :(得分:0)
仅使用JS
function Count(targetString){
var vowels = ['a','o','u','i','e'];
return targetString.split("").reduce(function(countingVaues,char){
countingVaues +=
vowels.filter(function(x){return x === char;}).length;
return countingVaues;
},0)};
Count("aouiesndfjksdnjkfnsdjkewwe"); //==7
答案 12 :(得分:0)
如果您要计算更多不同的数组 我认为您可以按照以下方式实现代码:
var numOfTrue;
var i=0;
var Answers = [ "true", "false", "not sure", "false", "true", "false", "not sure", "I don't know" ];
var counted = [];
var result = {};
Answers.forEach(answer => {// refer to each item in this array with the parameter "answer"
if(!counted.includes(answer)){ // check if answer is not in counted array
counted.push(answer); // add the answer to counted [array]
result[answer] = 1; // add answer to result{object} as a key with a value of 1
}else if(counted.includes(answer)){// here we check if answer is in counted [array]
// if it's true, that means we have already set its value in the result{object} to 1
result[answer] += 1 // now, we just need to increment its value by 1
}
})
console.log(result); // {true: 2, false: 3, not sure: 2, I don't know: 1}
numOfTrue = result.true;
console.log(numOfTrue);// 2
答案 13 :(得分:0)
var Answers = [ "true", "false", "not sure", "false", "true", "false", "not sure", "I don't know" ];
function maxDuplicateCountInstances(_arr){
const temp={};
const uniqueArrayKeyToCompare = Array.from(new Set(_arr));
let compareKey='';
console.log('Individually Count');
uniqueArrayKeyToCompare.forEach((unqKey)=>{
const filterOutArray = _arr.filter((key)=>key===unqKey);
temp.name = unqKey;
temp.count = filterOutArray.length;
console.log(temp.name,temp.count);
});
}
maxDuplicateCountInstances(Answers);