计算数组中迭代次数1

时间:2017-10-03 08:10:28

标签: javascript arrays

我的目标是在数组中计算1的迭代次数。 我有这段代码:

var array = [10, 3, 22, 40, 1, 40, 1, 22, 1, 0, 3, 53, 1, 1];
var count = 0;
for(var i = 0; i < array.length; ++i){
if(array[i] === 1)
count++;
}

console.log(count);

现在,它记录5,但是包括“10”它应该记录6,因为“10”还包含1.我可以使用哪些代码?

8 个答案:

答案 0 :(得分:1)

怎么样:

var count = array.toString().split('1').length - 1;

答案 1 :(得分:0)

您可以将filter方法与length属性结合使用,以便编写更多更清晰解决方案。

此外,请使用joinsplit方法以达到您的要求。

&#13;
&#13;
var array = [10, 3, 22, 40, 1, 40, 1, 22, 1, 0, 3, 53, 1, 1];
console.log(array.join('').split('').filter(a=>a==1).length);
&#13;
&#13;
&#13;

或使用reduce方法。

&#13;
&#13;
var array = [10, 3, 22, 40, 1, 40, 1, 22, 1, 0, 3, 53, 1, 1];
console.log(array.join('').split('').reduce((c,i)=> i==1 ? c+1 :c).length);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

只需将每个项目转换为字符串,然后检查1是否属于该数字。

因此,对于数字10,字符串为'10',然后'10'.indexOf('1')等于0。因此,每次在字符串中找到1时,都会增加计数器。

&#13;
&#13;
var array = [10, 3, 22, 40, 1, 40, 1, 22, 1, 0, 3, 53, 1, 1];
var count = 0;
for (var i = 0; i < array.length; ++i) {
  if (array[i].toString().indexOf('1') >= 0)
    count++;
}

console.log(count);
&#13;
&#13;
&#13;

答案 3 :(得分:0)

您需要将数字拆分成数字并迭代每个数字(这是一个字符)并与之进行比较。使用Object#toString将数字解析为string,按String#split拆分成字符,然后使用Array#forEach迭代字符并在那里进行相同的比较。

&#13;
&#13;
var array = [10, 3, 22, 40, 1, 40, 1, 22, 1, 0, 3, 53, 1, 1];
var count = 0;

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

   var numberAsString = array[i].toString();

   numberAsString.split('').forEach(char => {
      if(char === '1') {
        count++
      }
   });
}

console.log(count);
&#13;
&#13;
&#13;

答案 4 :(得分:0)

您需要将每个数字转换为字符串并使用indexOf

&#13;
&#13;
var array = [10, 3, 22, 40, 1, 40, 1, 22, 1, 0, 3, 53, 1, 1];
var count = array.reduce(function(p,c){
    if(c.toString().indexOf("1")>-1)
        p++;
    return p;
},0);

console.log(count);
&#13;
&#13;
&#13;

答案 5 :(得分:0)

您可以将Array#join数组项转换为字符串,并使用带有正则表达式的String#match进行计数:

&#13;
&#13;
var array = [10, 3, 22, 40, 1, 40, 1, 22, 1, 0, 3, 53, 1, 1];

// the || [] is a fallback in case there is no 1, and match returns null
var result = (array.join('').match(/1/g) || []).length;

console.log(result);
&#13;
&#13;
&#13;

答案 6 :(得分:0)

您可以检查已连接字符串的每个字符。

var array = [10, 3, 22, 40, 1, 40, 1, 22, 1, 0, 3, 53, 1, 1],
    count = 0,
    i,
    temp = array.join('');

for (i = 0; i < temp.length; ++i) {
    if (temp[i] === '1') {
        count++;
    }
}

console.log(count);

答案 7 :(得分:0)

Input - console.log(arrayToList([10, 20, 30]));
Actual output - { value: 10, rest: { value: 30, rest: null } }

Expected output - { value: 10,
  rest: { value: 20, rest: { value: 30, rest: null } } }