Estoy tratando de asignar el JSON de la URL a una array , pero creo que mi asignación de datos no es correcta. Quiero encontrar cada value dentro de los attributes y contar cuántas instancias de cada value hay en el archivo/matriz JSON.
[ { name: "1", attributes: [ { trait_type: "hat", value: "blue" }, { trait_type: "hair", value: "red" } ] } ]; $.getJSON( "https://jsonware.com/api/v1/json/3c53cbcd-5351-4fba-8b89-5f1fb009e857", function (data) { var items = $.map(data.attributes, function (i) { return i.value; const result = data.reduce( (acc, curr) => ((acc[curr] = (acc[curr] || 0) + 1), acc), {} ); console.log(result); console.log(items); }); } ); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>No está claro lo que quiere de la llamada.
No se ejecutará ningún código después de return i.value; por lo que console.logs no se ejecutará
Los valores que obtiene no se pueden sumar.
Aquí obtengo una matriz de todos los valores. jQuery no es necesario
fetch( "https://jsonware.com/api/v1/json/3c53cbcd-5351-4fba-8b89-5f1fb009e857") .then(response => response.json()) .then(data => { const values = Object.values(data).flatMap(item => ({[item.name]:item.attributes.map(attr => attr.value )})) values.forEach(val => console.log(Object.keys(val)[0],Object.values(val)[0].length)) const allValues = Object.values(data).map(item => item.attributes.map(attr => attr.value )) console.log("All values: ",allValues.length,allValues) } ); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>