计算数组中字符串的实例

时间:2012-04-03 15:41:06

标签: javascript jquery

我在jQuery中有一个数组,我需要计算该数组中“true”字符串的数量,然后使“numOfTrue”变量等于真实字符串的数量。所以在下面的数组中,有2个“true”字符串,所以numOfTrue将等于2.

var numOfTrue;
var Answers = [ "true", "false", "false", "true", "false" ];

我不知道如何在jQuery中循环遍历数组以计算字符串。或者甚至是必要的循环?

真实字符串的数量可能会在1到5之间的任何位置发生变化。

14 个答案:

答案 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提供,您也可以使用可用于数组的filterreduce函数。

过滤功能:

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 expressionsString.prototype.match()

代码:

&#13;
&#13;
const Answers = [ "true", "false", "false", "true", "false" ];
const count = Answers.toString().match(/true/g).length;

console.log(count)
&#13;
&#13;
&#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++;
   }
});

http://jsfiddle.net/3PpJS/

答案 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);

http://jsfiddle.net/kpcrash/Xxcw6/

答案 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);