提问者:小点点

如何使用JavaScript输出数组中出现的次数[重复]


这里的目标是计算以下数组中出现的次数:[2,3,7,9,7,3,2]

例如,如果用户输入7,输出应该是[2,4],因为7出现在这两个索引中。到目前为止,我所拥有的看起来像这样

    var arr1 = [2,3,7,9,7,3,2];
    printArray(arr1);
    var indexOfNum = findValueInArray(arr1, num);

    if (indexOfNum === -1) {
    console.log('%d was not found in the array of random integers.', num);
   }
    else {
    console.log('%d was found in the array of random integers at index %d',num, indexOfNum);
}

我的结果是:

    arr[0] = 2
    arr[1] = 3
    arr[2] = 7
    arr[3] = 9
    arr[4] = 7
    arr[5] = 3
    arr[6] = 2
    7 was found in the array of random integers at index 2

我知道我很接近了,但我不确定我到底忽略了什么。谢谢你们!


共3个答案

匿名用户

试试这个,

var arr1 = [2,3,7,9,7,3,2];

function occurance(array,element){
  var counts = [];
    for (i = 0; i < array.length; i++){
      if (array[i] === element) {  
        counts.push(i);
      }
    }
  return counts;
}

occurance(arr1, 2); //returns [0,6]
occurance(arr1, 7); //returns [2,4]

匿名用户

function findValueInArray(arr, num) {
    var r = [];
    for(i = 0; i < arr.length; i++) (arr[i] == num) ? r.push(i) : '';
    return r;
}

function printArray(num, indexOfNum) {
    console.log('%d was found ... index %s', num, indexOfNum.join(', '));
}

var arr = [2,3,7,9,7,3,2];
var num = 7;
var indexOfNum = findValueInArray(arr, num);
printArray(num, indexOfNum);

匿名用户

你可以这样做:

var arr = [2, 3, 7, 9, 7, 3, 2];

function occurrences(x, a) {
  var pos = [];
  a.forEach(function(val, i) {
    if (x === a[i]) {
      pos.push(i);
    }
  });

  return pos;
}

console.log(occurrences(7, arr)); // [2, 4]
console.log(occurrences(5, arr)); // []
console.log(occurrences(2, arr)); // [0, 6]