admin管理员组文章数量:1134246
I would like to know if there is a native javascript code that does the same thing as this:
function f(array,value){
var n = 0;
for(i = 0; i < array.length; i++){
if(array[i] == value){n++}
}
return n;
}
I would like to know if there is a native javascript code that does the same thing as this:
function f(array,value){
var n = 0;
for(i = 0; i < array.length; i++){
if(array[i] == value){n++}
}
return n;
}
Share
Improve this question
edited May 21, 2016 at 16:38
Donald Duck
asked May 21, 2016 at 16:33
Donald DuckDonald Duck
8,86123 gold badges79 silver badges102 bronze badges
6
|
Show 1 more comment
12 Answers
Reset to default 84There might be different approaches for such purpose.
And your approach with for
loop is obviously not misplaced(except that it looks redundantly by amount of code).
Here are some additional approaches to get the occurrence of a certain value in array:
Using
Array.forEach
method:var arr = [2, 3, 1, 3, 4, 5, 3, 1]; function getOccurrence(array, value) { var count = 0; array.forEach((v) => (v === value && count++)); return count; } console.log(getOccurrence(arr, 1)); // 2 console.log(getOccurrence(arr, 3)); // 3
Using
Array.filter
method:function getOccurrence(array, value) { return array.filter((v) => (v === value)).length; } console.log(getOccurrence(arr, 1)); // 2 console.log(getOccurrence(arr, 3)); // 3
Another option is to use Array.filter()
:
count = myArray.filter(x => x === searchValue).length;
You could use reduce to get there:
Working example
var a = [1,2,3,1,2,3,4];
var map = a.reduce(function(obj, b) {
obj[b] = ++obj[b] || 1;
return obj;
}, {});
You can also use forEach
let countObj = {};
let arr = [1,2,3,1,2,3,4];
let countFunc = keys => {
countObj[keys] = ++countObj[keys] || 1;
}
arr.forEach(countFunc);
// {1: 2, 2: 2, 3: 2, 4: 1}
Here is my solution without using an additional object and using reduce
:
const occurrencesOf = (number,numbers) => numbers.reduce((counter, currentNumber)=> (number === currentNumber ? counter+1 : counter),0);
occurrencesOf(1, [1,2,3,4,5,1,1]) // returns 3
occurrencesOf(6, [1,2,3,4,5,1,1]) // returns 0
occurrencesOf(5, [1,2,3,4,5,1,1]) // returns 1
You could use the Array filter method and find the length of the new array like this
const count = (arr, value) => arr.filter(val => val === value).length
let ar = [2,2,3,1,4,9,5,2,1,3,4,4,8,5];
const countSameNumber = (ar: any, findNumber: any) => {
let count = 0;
ar.map((value: any) => {
if(value === findNumber) {
count = count + 1;
}
})
return count;
}
let set = new Set(ar);
for (let entry of set) {
console.log(entry+":", countSameNumber(ar, entry));
}
const arr = ["a", "a", "a", "b", "b", "b", "b", "c", "c", "c"];
let count = 0;
function countValues(array, countItem) {
array.forEach(itm => {
if (itm == countItem) count++;
});
console.log(`${countItem} ${count}`);
}
countValues(arr, "c");
This is how I did mine using just a for loop. It's not as sophisticated as some of the answers above but it worked for me.
function getNumOfTimes(arrayOfNums){
let found = {}
for (let i = 0; i < arrayOfNums.length; i++) {
let keys = arrayOfNums[i].toString()
found[keys] = ++found[arrayOfNums[i]] || 1
}
return found
}
getNumOfTimes([1, 4, 4, 4, 5, 3, 3, 3])
// { '1': 1, '3': 3, '4': 3, '5': 1 }
You may want to use indexOf()
function to find and count each value
in array
function g(array,value){
var n = -1;
var i = -1;
do {
n++;
i = array.indexOf(value, i+1);
} while (i >= 0 );
return n;
}
let countValue = 0;
Array.forEach((word) => {
if (word === searchValue) {
return countValue ++;
}
});
console.log(`The number of word 'asdf': ${countValue}`);
I used this code to count the number of a given word in a text which was previously converted into an array.
var obj = [];
var array = ['a', 'a', 'a', 'b', 'c', 'c', 'd', 'd', 'd', 'd', 'd', 'd'];
array.forEach(element => {
let count = 1;
array.forEach(loopo => {
if(element == loopo)
{
obj[loopo] = count++;
}
})
});
console.log(obj);
本文标签: Count the number of times a same value appears in a javascript arrayStack Overflow
版权声明:本文标题:Count the number of times a same value appears in a javascript array - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1736854420a1955651.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
reduce
. There's no single built-in method to do it, the closest you can get is built-in methods that'll loop the array for you. – SeinopSys Commented May 21, 2016 at 16:41