Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

139
Visualizações
accessing JSON value in array

I have the following JSON object

[
  {
    'parameter-name': 'device',
    enabled: true,
    value: '077743322L102515',
    description: 'device identifier. Should be used only when multiple devices are connected at once'
  },
  {
    'parameter-name': 'app_id',
    enabled: true,
    value: 'com.instagram.andrpbj',
    description: ' when using this parameter, you are able to use Insomniac on a cloned Instagram-application. Just provide the new package name'
  },
  {
    'parameter-name': 'old',
    enabled: false,
    value: 'True',
    description: 'add this flag to use an old version of uiautomator. Use it only if you experience problems with the default version'
  }
]

i wanted to access the value of the parameter-name: 'old', by value i mean value is there a one step solution to do that without iterating through each entry ?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

From my point of view, using Array.find() is the cleanest solution to get the value:

const { value } = data.find((obj) => obj['parameter-name'] === 'old');

If your goal is to edit the value as you're asking in the comment, you can get the index of the targeted object within the array using Array.findIndex() and then edit the data:

const objIdx = data.findIndex((obj) => obj['parameter-name'] === 'old');
data[objIdx].value = 'newValue'

Instead of getting the index, you could even manipulate the value on the object directly:

const obj = data.find((obj) => obj['parameter-name'] === 'old');
obj.value = 'newValue';

Code Snippet

const data = [{
    'parameter-name': 'device',
    enabled: true,
    value: '077743322L102515',
    description: 'device identifier. Should be used only when multiple devices are connected at once'
  },
  {
    'parameter-name': 'app_id',
    enabled: true,
    value: 'com.instagram.andrpbj',
    description: ' when using this parameter, you are able to use Insomniac on a cloned Instagram-application. Just provide the new package name'
  },
  {
    'parameter-name': 'old',
    enabled: false,
    value: 'True',
    description: 'add this flag to use an old version of uiautomator. Use it only if you experience problems with the default version'
  }
];

const obj = data.find((obj) => obj['parameter-name'] === 'old');
obj.value = 'newValue';

console.log(data);


In order to account for a situation where the 'searched-value' is not found, it may be better to split the assignment like this:

const foundObj = data?.find((obj) => obj['parameter-name'] === 'old');
if (foundObj) foundObj.value = 'newValue';

const data = [{
    'parameter-name': 'device',
    enabled: true,
    value: '077743322L102515',
    description: 'device identifier. Should be used only when multiple devices are connected at once'
  },
  {
    'parameter-name': 'app_id',
    enabled: true,
    value: 'com.instagram.andrpbj',
    description: ' when using this parameter, you are able to use Insomniac on a cloned Instagram-application. Just provide the new package name'
  },
  {
    'parameter-name': 'old',
    enabled: false,
    value: 'True',
    description: 'add this flag to use an old version of uiautomator. Use it only if you experience problems with the default version'
  }
];

const foundObj = data?.find((obj) => obj['parameter-name'] === 'old');
if (foundObj) foundObj.value = 'newValue';

console.log(data);

about 4 years ago · Juan Pablo Isaza Relatório

0

data.filter((value) => {
  if(value['parameter-name'] === 'old'){
     console.log(value);
  }
})
about 4 years ago · Juan Pablo Isaza Relatório

0

An alternative to Alexander's answer if you don't want to mutate the array object directly.

It's a very generic function that accepts a query object (key, oldValue, newValue) so it will work on all the property keys, not just parameter-name.

It finds the object that matches the query criteria (if nothing is found the function returns null), filters out the objects that don't match the query criteria, and then returns that filtered array with a new updated object.

const arr=[{"parameter-name":"device",enabled:!0,value:"077743322L102515",description:"device identifier. Should be used only when multiple devices are connected at once"},{"parameter-name":"app_id",enabled:!0,value:"com.instagram.andrpbj",description:" when using this parameter, you are able to use Insomniac on a cloned Instagram-application. Just provide the new package name"},{"parameter-name":"old",enabled:!1,value:"True",description:"add this flag to use an old version of uiautomator. Use it only if you experience problems with the default version"}];

// Accept an array, and a query object
function change(arr, query) {

  // Destructure the query
  const { key, oldValue, newValue } = query;

  // Look for the object where the value
  // of the key specified in the query
  // matches the oldValue
  const found = arr.find(obj => {
    return obj[key] === oldValue;
  });

  // If there isn't a match return null
  if (!found) return null;

  // Otherwise `filter` out the objects that
  // don't match the criteria...
  const filtered = arr.filter(obj => {
    return obj[key] !== oldValue;
  });

  // Destructure all the object properties
  // away from the property we want to update
  const { [key]: temp, ...rest } = found;
  
  // Return a new array with a new updated object
  return [ ...filtered, { [key]: newValue, ...rest } ];

}

const query = {
  key: 'parameter-name',
  oldValue: 'old',
  newValue: 'new'
};

console.log(change(arr, query));

const query2 = {
  key: 'value',
  oldValue: '077743322L102515',
  newValue: '999999999'
};

console.log(change(arr, query2));

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda