一个值在数组中存在的次数

How many times a value exists in an array

本文关键字:存在 数组 一个      更新时间:2023-09-26

我要做的第一件事就是找出输入中的数字i类型是否存在于数组中,这是有效的。

我要做的第二件事是找出它存在了多少次。我在这条路上走对了吗?

<input id="hvorMange" type="number">
<button type="button" onclick="skrivUt12()">Finn tallet</button>
<p id="skrivUt12"></p> 

var liste = [12,14,13,76,5,1,23,12,87,124,674,98,3,7,-3,5];  

function skrivUt12(){
var tall = +document.getElementById("hvorMange").value;
var sum = 0;

for(i = 0; i < liste.length; i++) {
        if (tall === liste[i]) {
            sum++;
            document.getElementById("skrivUt12").innerHTML = "Tallet " + tall + " finnes " + sum + " antall ganger";
            return true;
        }
         else {
            document.getElementById("skrivUt12").innerHTML = "Tallet " + tall + " finnes ikke";
        }
    }
}

首先过滤列表以保留搜索项,然后返回过滤列表的长度:

var liste = [12,14,13,76,5,1,23,12,87,124,674,98,3,7,-3,5];
var count = (input, arr) => arr.filter(x => x === input).length;
console.log (count(12, liste)); // 2

最好使用一个对象来计数,并使用它来检查和显示计数。

var liste = [12, 14, 13, 76, 5, 1, 23, 12, 87, 124, 674, 98, 3, 7, -3, 5],
    count = {};
liste.forEach(function(a) {
    count[a] = (count[a] || 0) + 1;
});
console.log(count);
if (count[12]) {
    console.log('12 exist ' + count[12] + ' time/s');
} else {
    console.log('12 does not exist.');
}
.as-console-wrapper { max-height: 100% !important; top: 0; }

这对你有用吗

JSFiddle联系

var liste = [12, 14, 13, 76, 5, 1, 23, 12, 87, 124, 674, 98, 3, 7, -3, 5];
function skrivUt12() {
  var tall = +document.getElementById("hvorMange").value;
  var sum = 0;
  for (i = 0; i < liste.length; i++) {
    if (tall === liste[i]) {
      sum++;
    }
  }
  if (sum > 0) {
    document.getElementById("skrivUt12").innerHTML = "Tallet " + tall + " finnes " + sum + " antall ganger";
  } else {
    document.getElementById("skrivUt12").innerHTML = "Tallet " + tall + " finnes ikke";
  }
}

使用array .prototype.reduce()建立一个新的liste匹配值计数数组。然后,您可以测试您正在查找的项目是否存在于该数组中,以及实例的计数是多少:

var liste = [12,14,13,76,5,1,23,12,87,124,674,98,3,7,-3,5];
var counts = liste.reduce((prev, curr) => (prev[curr] = ++prev[curr] || 1, prev), {})
var count = function(item){return counts[item] || 0;};
var exists = function(item){return !!counts[item];};
console.log(exists(13)); //true
console.log(exists(999)); //false
console.log(count(5)); //2
console.log(count(232)); //0

你可以在下面的帖子中试试Thor Jacobsen的答案。

你也应该参考ninjagecko的答案,因为它强调了其他方法。

也是一个警告,因为你是从输入中获取值,确保在比较它之前将它转换为数字。

For循环

var arr = [1, 2, 3, 4, 5, 2, 1, 4, 4, 5, 5, 2];
function search() {
  var searchVal = +(document.getElementById('txtValue').value || 0);
  var count = 0;
  for (var i = 0; i < arr.length; ++i) {
    if (arr[i] === searchVal)
      count++;
  }
  console.log(count)
}
<input type="text" id="txtValue">
<button onclick="search()">Get Count</button>

Array.filter

var arr = [1, 2, 3, 4, 5, 2, 1, 4, 4, 5, 5, 2];
function search() {
  var searchVal = +(document.getElementById('txtValue').value || 0);
  var count = arr.filter(function(item) {
    return item === searchVal
  }).length;
  console.log(count)
}
<input type="text" id="txtValue">
<button onclick="search()">Get Count</button>