English 中文(简体)
粗略数字
原标题:
  • 时间:2009-05-19 05:24:24
  •  标签:

我需要计算一下特征的发生次数。

例如,我方言中载有:

var mainStr = "str1,str2,str3,str4";

我想找到对应的编号:, nature,即3。 而且,在 com一带分裂之后,个人扼杀计数为4。

我还必须证实,每一条插图,即方言1或方言2或方言3或方言4不应超过15个特性。

最佳回答

我更新了这一答案。 我赞成更好地使用对应办法的想法,但进展缓慢:

console.log(("str1,str2,str3,str4".match(/,/g) || []).length); //logs 3

console.log(("str1,str2,str3,str4".match(new RegExp("str", "g")) || []).length); //logs 4

如果你知道你正在事先寻找什么,如果你不能够使用<代码>RegExp的构造,并在<代码>g上作为论据通过,则使用固定字句。

, 并随附结果, no>>>>>。

我在2009年所作的原始答复如下。 它不必要地创造了一个阵列,但使用分裂的速度更快(截至2014年9月)。 如果我真的需要加快速度,我不会怀疑我会使用一种分裂,但我更喜欢使用对应办法。

旧答案(从2009年起):

如果你回顾一下 com:

(mainStr.split(",").length - 1) //3

如果你回顾一下,

(mainStr.split("str").length - 1) //4

在“Los”回答中和在我自己的sil中,的分部分都以速进行,至少是在 Chrome,但又一次造成外围阵似乎起步。

问题回答

添加这一功能,对原型进行筛选:

String.prototype.count=function(c) { 
  var result = 0, i = 0;
  for(i;i<this.length;i++)if(this[i]==c)result++;
  return result;
};

使用:

console.log("strings".count("s")); //2

简而言之,使用split,以找出在扼杀中发生特性的次数。

mainStr.split( , ).length // gives 4 which is the number of strings after splitting using delimiter comma

mainStr.split( , ).length - 1 // gives 3 which is the count of comma

www.un.org/Depts/DGACM/index_spanish.htm 这可能是简单的,但并非最快。 见下文基准。


令人惊讶的是,13年来,这一答案没有显示出来。 理论上,它似乎最快:

const s = "The quick brown fox jumps over the lazy dog.";
const oCount = s.length - s.replaceAll( o ,   ).length;

如果在扼杀中只存在两种特性,则速度更快:


const s = "001101001";
const oneCount = s.replaceAll( 0 ,   ).length;

http://www.ohchr.org。

const { performance } = require( node:perf_hooks );

const ITERATIONS = 10000000;
const TEST_STRING = "The quick brown fox jumps over the lazy dog.";

console.log(ITERATIONS, "iterations");

let sum = 0; // make sure compiler doesn t optimize code out
let start = performance.now();
for (let i = 0; i < ITERATIONS; ++i) {
  sum += TEST_STRING.length - TEST_STRING.replaceAll( o ,   ).length;
}
let end = performance.now();
console.log("  replaceAll duration", end - start, `(sum ${sum})`);

sum = 0;
start = performance.now();
for (let i = 0; i < ITERATIONS; ++i) {
  sum += TEST_STRING.split( o ).length - 1
}
end = performance.now();
console.log("  split duration", end - start, `(sum ${sum})`);
10000 iterations
  replaceAll duration 2.6167500019073486 (sum 40000)
  split duration 2.0777920186519623 (sum 40000)
100000 iterations
  replaceAll duration 17.563208997249603 (sum 400000)
  split duration 8.087624996900558 (sum 400000)
1000000 iterations
  replaceAll duration 128.71587499976158 (sum 4000000)
  split duration 64.15841698646545 (sum 4000000)
10000000 iterations
  replaceAll duration 1223.3415840268135 (sum 40000000)
  split duration 629.1629169881344 (sum 40000000)

也可rest。 您的阐述和工作,如使用一系列要素

const mainStr =  str1,str2,str3,str4 ;
const commas = [...mainStr].filter(l => l ===  , ).length;

console.log(commas);

const mainStr =  str1,str2,str3,str4 ;
const commas = [...mainStr].reduce((a, c) => c ===  ,  ? ++a : a, 0);

console.log(commas);

这里是一个类似的解决办法,但它使用<代码>Array.prototype.reduce

function countCharacters(char, string) {
  return string.split(  ).reduce((acc, ch) => ch === char ? acc + 1: acc, 0)
}

正如有人提到的那样,/code> 的工作要快于. >。

ok, reg, reg, reg, 或许不会很快,但很短,可以读到, 而在我的情况下,则只有:

key.replace(/[^_]/g,  ).length

just remove everything that does not look like your char but it does not look nice with a string as input

Split诉Rep

var i = 0;

var split_start = new Date().getTime();
while (i < 30000) {
  "1234,453,123,324".split(",").length -1;
  i++;
}
var split_end = new Date().getTime();
var split_time = split_end - split_start;


i= 0;
var reg_start = new Date().getTime();
while (i < 30000) {
  ("1234,453,123,324".match(/,/g) || []).length;
  i++;
}
var reg_end = new Date().getTime();
var reg_time = reg_end - reg_start;

alert ( Split Execution time:   + split_time + "
" +  RegExp Execution time:   + reg_time + "
");

<>>>>> 06/10/2022

因此,我进行了各种旁证测试,如果你使用案例允许的话,使用分裂似乎将达到最佳的总体效果。


function countChar(char: string, string: string): number  {

  return string.split(char).length - 1

}

countChar( x ,  foo x bar x baz x )


我知道我很晚才来到这里,但我很抱歉,没有人以最基本的方法回答这个问题。 社区就这一问题提供的答复中,很大一部分是循环利用,但所有的答复都以无法真正高效的老办法转移。

在处理包含数千个特性的大型扼杀时,为了达到发生时的计数,可能变得非常不相干,更不用提一条密码。 以下解决办法利用了<代码>slice 、indexOf和可信赖的传统while。 这些办法阻止我们走过每一个特点,并将大大加快时间。 这些逻辑与你在需要铺路的教区和法体分析器中发现的相似。

使用切片

在这一方法中,我们正在利用<代码>slice和每个<代码>indexOf。 相应地,我们将通过扼杀和消除先前搜索的po。 每一次我们打电话indexOf。 搜查范围将缩小。

function countChar (char: string, search: string): number {
  
  let num: number = 0;
  let str: string = search;
  let pos: number = str.indexOf(char);
  
  while(pos > -1) {
    str = str.slice(pos + 1);
    pos = str.indexOf(char);
    num++;
  }

  return num;

}

// Call the function
countChar( x ,  foo x bar x baz x ) // 3

www.un.org/Depts/DGACM/index_spanish.htm 采用职位索引

与使用<代码>slice的第一种方法类似,但我们在检索该方法时,将利用<条码>的参数,即

function countChar (char: string, str: string): number {
  
  let num: number = 0;
  let pos: number = str.indexOf(char);
  
  while(pos > -1) {
    pos = str.indexOf(char, pos + 1);
    num++;
  }

  return num;

}

// Call the function
countChar( x ,  foo x bar x baz x ) // 3

从个人角度讲,我首先采取第二种做法,但两者在处理大街时都是罚款和效劳的,但规模也较小。

我对已接受的答复稍加改进,因此可以检查对案件敏感/对案件敏感的对等,并且是一种与扼杀目标相关的方法:

String.prototype.count = function(lit, cis) {
    var m = this.toString().match(new RegExp(lit, ((cis) ? "gi" : "g")));
    return (m != null) ? m.length : 0;
}

lit is the string to search for ( such as ex ), and cis is case-insensitivity, defaulted to false, it will allow for choice of case insensitive matches.


To search the string I love StackOverflow.com for the lower-case letter o , you would use:
var amount_of_os =  I love StackOverflow.com .count( o );

amount_of_os would be equal to 2.


If we were to search the same string again using case-insensitive matching, you would use:
var amount_of_os =  I love StackOverflow.com .count( o , true);

时间:amount_of_os 等于3,因为从星号中提取的资本代码已纳入搜索。

1. 最容易发现......

str =  mississippi ;

function find_occurences(str, char_to_count){
    return str.split(char_to_count).length - 1;
}

find_occurences(str,  i ) //outputs 4

这就是我的解决办法。 在我前面已经张贴了一些解决办法。 但我很想在这里谈谈我的看法。

const mainStr =  str1,str2,str3,str4 ;

const commaAndStringCounter = (str) => {
  const commas = [...str].filter(letter => letter ===  , ).length;
  const numOfStr = str.split( , ).length;

  return `Commas: ${commas}, String: ${numOfStr}`;
}

// Run the code
console.log(commaAndStringCounter(mainStr)); // Output: Commas: 3, String: 4

页: 1

s =  dir/dir/dir/dir/ 
for(i=l=0;i<s.length;i++)
if(s[i] ==  / )
l++

我正致力于一个小型项目,需要一个分级的反响。 寻找错误的短语给我没有结果,不过,在撰写我自己的执行情况之后,我对这个问题 st。 不管怎么说,这是我的方法,它可能比这里大多数人要慢,但可能对某人有帮助:

function count_letters() {
var counter = 0;

for (var i = 0; i < input.length; i++) {
    var index_of_sub = input.indexOf(input_letter, i);

    if (index_of_sub > -1) {
        counter++;
        i = index_of_sub;
    }
}

请让我知道,你是否发现这种执行失败或不遵守某些标准!

UPDATE You may want to substitute:

    for (var i = 0; i < input.length; i++) {

原文:

for (var i = 0, input_length = input.length; i < input_length; i++) {

Interesting read discussing the above: http://www.erichynds.com/blog/javascript-length-property-is-a-stored-value

说明。

例:

var str = "hellow how is life"; var len = str.split("h").length-1; will give count 2 for character "h" in the above string;

www.un.org/Depts/DGACM/index_spanish.htm 最快的方法似乎是通过指数操作者:。

function charOccurances (str, char)
{
  for (var c = 0, i = 0, len = str.length; i < len; ++i)
  {
    if (str[i] == char)
    {
      ++c;
    }
  }
  return c;
}

console.log( charOccurances( example/path/script.js ,  / ) ); // 2

www.un.org/spanish/ecosoc 或作为原型的功能:

String.prototype.charOccurances = function (char)
{
  for (var c = 0, i = 0, len = this.length; i < len; ++i)
  {
    if (this[i] == char)
    {
      ++c;
    }
  }
  return c;
}

console.log(  example/path/script.js .charOccurances( / ) ); // 2
function len(text,char){

return text.innerText.split(string).length
}

console.log(len("str1,str2,str3,str4",","))

这是一个非常短的职能。

String.prototype.reduce = Array.prototype.reduce;

String.prototype.count = function(c) {
    return this.reduce(((n, x) => n + (x === c ? 1 : 0)), 0)
};

const n = "bugs bunny was here".count("b")
console.log(n)

与上述原型类似,但不为扼杀分配阵列。 分配是上文几乎每个版本的问题,但备选案文除外。 这避免了假装法,重新使用已安装的浏览器。 减少职能。

下面用定期的表述来测试时间长度。 测试确保你不会有16个或16个以上的连续非商品特性。 如果它通过测试,那么它就开始分割扼杀。 计算mas数与点数减去点数一样简单。

var mainStr = "str1,str2,str3,str4";
var testregex = /([^,]{16,})/g;
if (testregex.test(mainStr)) {
  alert("values must be separated by commas and each may not exceed 15 characters");
} else {
  var strs = mainStr.split( , );
  alert("mainStr contains " + strs.length + " substrings separated by commas.");
  alert("mainStr contains " + (strs.length-1) + " commas.");
}

采用Node.js v.6.0.0的Im,最快的是指数(Lo Sauer的回答第3种方法)。

第二是:

function count(s, c) {
  var n = 0;
  for (let x of s) {
    if (x == c)
      n++;
  }
  return n;
}

并且:

function character_count(string, char, ptr = 0, count = 0) {
    while (ptr = string.indexOf(char, ptr) + 1) {count ++}
    return count
}

• 处理愤怒问题!

在这里,与<代码>split()和替代方法一样快,这些方法比reg法( Chrome和 Firefox)更快。

let num = 0;
let str = "str1,str2,str3,str4";
//Note: Pre-calculating `.length` is an optimization;
//otherwise, it recalculates it every loop iteration.
let len = str.length;
//Note: Don t use a `for (... of ...)` loop, it s slow!
for (let charIndex = 0; charIndex < len; ++charIndex) {
  if (str[charIndex] ===  , ) {
    ++num;
  }
}

var mainStr = "str1,str2,str3,str4";
var splitStr = mainStr.split(",").length - 1; // subtracting 1 is important!
alert(splitStr);

加入一个阵列,使我们有一些因素,其数量总是比性质上的事例多1个。 这可能不是最富有记忆力的,但如果你的投入总是很小,那就是一个直截了当和容易理解的方式。

如果你需要穿透非常大的体(超过100个特性),或者如果是处理大量数据的核心结构,我会建议采取不同的战略。

我的解决办法:

function countOcurrences(str, value){
   var regExp = new RegExp(value, "gi");
   return str.match(regExp) ? str.match(regExp).length : 0;  
}

我知道这个问题可能是一个老问题,但我对贾瓦文的低层开端人有一个简单的解决办法。

作为开端人,我只能理解这个问题的一些解决办法,因此,我使用了两个封顶的<>FOR路程,以检查每一特性在座标、加插一个上的每一种特性。

我制造了一个新空白物体,每个关键财产具有特性,其价值是每一特性在座标上出现的次数。

例假功能:-

function countAllCharacters(str) {
  var obj = {};
  if(str.length!==0){
    for(i=0;i<str.length;i++){
      var count = 0;
      for(j=0;j<str.length;j++){
        if(str[i] === str[j]){
          count++;
        }
      }
      if(!obj.hasOwnProperty(str[i])){
        obj[str[i]] = count;
      }
    }
  }
  return obj;
}




相关问题