Así que estoy tratando con un objeto que se parece un poco a esto:
{ examples: [ { key: 'value1' }, { key: 'value1' }, { key: 'value1' }, { key: 'value2' }, { key: 'value2' }, { key: 'value2' } ] }Como puedes ver los valores están ordenados. Estoy tratando de llegar a donde el valor es valor2 y estoy seguro de que hay una forma más eficiente que la que estoy haciendo actualmente, ya que el objeto real es significativamente más grande y lleva algún tiempo alcanzar el valor2. Esta es la función que creé:
function getValue2 (obj, num) { if (obj.examples[num] = "value2"){ console.log(obj.examples[num]); } else { getValue2(obj, num + 1); }; }; var x = JSON.parse(obj); getValue2(x, 0);¡Gracias de antemano! :)
Puedes usar Array#find :
devuelve el valor del primer elemento de la matriz proporcionada que satisface la función de prueba proporcionada. Si ningún valor satisface la función de prueba, se devuelve undefined.
const data = { examples: [ { key: 'value1' }, { key: 'value1' }, { key: 'value1' }, { key: 'value2' }, { key: 'value2' }, { key: 'value2' } ] }; const res = data.examples.find(({ key }) => key === 'value2'); console.log(res); Para obtener el índice de la primera aparición, puede usar Array#findIndex :
devuelve el índice del primer elemento de la matriz que satisface la función de prueba proporcionada. De lo contrario, devuelve -1, lo que indica que ningún elemento pasó la prueba.
const data = { examples: [ { key: 'value1' }, { key: 'value1' }, { key: 'value1' }, { key: 'value2' }, { key: 'value2' }, { key: 'value2' } ] }; const index = data.examples.findIndex(({ key }) => key === 'value2'); console.log(index);¿Qué tal usar Object.values , así:
function getValue2(obj){ return Object.values(obj.examples).find(e => e === 'value2') }El primer problema que veo es que está usando un solo igual = para verificar la igualdad cuando debería ser == o === .
En cuanto a formas alternativas de ejecutar una función similar, le sugiero que busque y aprenda sobre los bucles for y while , ya que son esenciales para JS.