Estoy buscando una solución a un problema que estoy experimentando actualmente con el bucle sobre una matriz que contiene objetos. Dentro de los objetos secundarios, me gustaría acceder al segundo elemento [2], tome su valor en mi ejemplo a continuación;
ventanas, windows_11, linux_sys
Verifique si existen actualmente dentro de una matriz (la matriz comienza vacía, por lo tanto, agregará los valores si aún no existen, y cuente la cantidad de veces que aparece un "Nombre de software" específico en todos los objetos secundarios.
Aquí hay una entrada de ejemplo de mi matriz JSON y lo que tengo actualmente:
json_output = [ { "id": "1", "Device Name": "device3", "Software Name": "windows" }, { "id": "2", "Device Name": "device6", "Software Name": "windows" }, { "id": "3", "Device Name": "device11", "Software Name": "windows" }, { "id": "4", "Device Name": "device11", "Software Name": "windows_11" }, { "id": "5", "Device Name": "device11", "Software Name": "linux_sys" } ] new_arr = []; for (var i = 0; i < json_output.length; i++) { new_arr.push(Object.values(json_output[i])[2]); }Esto está devolviendo una lista que contiene:
["windows","windows","windows", "windows_11", "linux_sys"]Si alguien pudiera ayudarme a crear el siguiente, se lo agradecería mucho. En lugar de una matriz como la que tengo actualmente, me gustaría recrear la siguiente;
software_name_count [ { "windows": "3" }, { "windows_11": "1" }, { "linux_sys": "1" } ]Gracias a cualquiera que me ayude a superar este problema. Soy relativamente novato con JS. Si hay más información que se requiere por favor hágamelo saber.
ps: no puedo codificar ninguna sección de este código, como los nombres de software windows, windows_11 y linux_sys.
gracias jorge
Usar un objeto es más útil que una matriz aquí para guardar los datos. Pero puede convertir si es necesario.
json_output = [ { "id": "1", "Device Name": "device3", "Software Name": "windows" }, { "id": "2", "Device Name": "device6", "Software Name": "windows" }, { "id": "3", "Device Name": "device11", "Software Name": "windows" }, { "id": "4", "Device Name": "device11", "Software Name": "windows_11" }, { "id": "5", "Device Name": "device11", "Software Name": "linux_sys" } ]; new_obj = {}; for (obj of json_output) { let key = obj["Software Name"]; new_obj[key] = json_output.filter(a => a["Software Name"] == key).length; } console.log( new_obj ); // do you need to format this as an array? if so, do this const new_arr = []; for (const [softwareName, count] of Object.entries(new_obj)) { let row = {[softwareName]: count}; new_arr.push(row); } console.log( new_arr );