Dada una array y la tarea es contar la cantidad de tipos de datos utilizados para crear esa array.
Ejemplo:
Entrada: [1, verdadero, “hola”, [], {}, indefinido, función(){}]
Salida: {
booleano: 1,
función: 1,
número: 1,
objeto: 2,
string: 1,
indefinido: 1
}
Entrada: [función(){}, nuevo Objeto(), [], {}, NaN, Infinito, indefinido, nulo, 0]
Salida: {
función: 1,
número: 3,
objeto: 4,
indefinido: 1
}
strong> Enfoque 1: en este enfoque, usamos el método Array.reduce() e inicializamos el método con un objeto vacío.
Javascript
<script> // JavaScript program to count number of data types in an array let countDtypes = (arr) => { return arr.reduce((acc, curr) => { // Check if the acc contains the type or not if (acc[typeof curr]) { // Increase the type with one acc[typeof curr]++; } else { /* If acc not contains the type then initialize the type with one */ acc[typeof curr] = 1 } return acc }, {}) // Initialize with an empty array } let arr = [function() {}, new Object(), [], {}, NaN, Infinity, undefined, null, 0]; console.log(countDtypes(arr)); </script>
Producción:
{ function: 1, number: 3, object: 4, undefined: 1 }
Enfoque 2: en este enfoque, usamos el método Array.forEach() para iterar la array. Y crea una array vacía y en cada iteración, verificamos si el tipo de iteración actual está presente en el objeto recién creado o no. En caso afirmativo, simplemente aumente el tipo con 1; de lo contrario, cree una nueva clave con el nombre del tipo e inicialice con 1.
Javascript
<script> // JavaScript program to count number of data types in an array let countDtypes = (arr) => { let obj = {} arr.forEach((val) => { // Check if obj contains the type or not if (obj[typeof val]) { // Increase the type with one obj[typeof val]++; } else { // Initialize a key (type) into obj obj[typeof val] = 1; } }) return obj } let arr = [function() {}, new Object(), [], {}, NaN, Infinity, undefined, null, 0 ]; console.log(countDtypes(arr)); </script>
Producción:
{ boolean: 1, function: 1, number: 1, object: 2, string: 1, undefined: 1 }
Publicación traducida automáticamente
Artículo escrito por _saurabh_jaiswal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA