параметр функции для доступа к ключу json в javascript, узел - PullRequest
0 голосов
/ 09 июля 2020

У меня есть json с 10 такими элементами: {"id":"2","name":"Peter","number":"A4584857","father":"Gerart","color":"green"}

Я пытаюсь изменить json, поэтому у меня есть функция, которая читает и пишет вот так:

function updatefilelocal(id,texto) {
   const fs = require('fs');
    fs.readFile('students.json', (err, data) => {  

      if (err) throw err;
      let json = JSON.parse(data); 
      console.log('This is after the read call')

      const filename='students.json';
      var file=json; 
    
      file.alumnos[id].color= texto

      fs.writeFile(filename,JSON.stringify(file),function writeJson(err){
        if (err)return console.log(err);
        //console.log(JSON.stringify(file));
        //console.log('writing to'+filename )
    
      });
    });
}

итак, с этой строкой: file.alumnos[id].color= texto и с этой функцией: updatefilelocal(2,'yellow') я могу изменить цвет ключа в моем json. Что ж, это работает, но когда я хочу изменить «имя» ключа моего элемента Мне нужно изменить цвет для имени следующим образом: file.alumnos[id].name= texto, и это нормально, но я хочу добавить третий параметр в мою функцию: function updatefilelocal(id,texto,third_parameter) {...}, чтобы изменить «цвет» на «имя». я вызову свою функцию следующим образом: updatefilelocal(id,texto,name), если я хочу изменить имя своего элемента или updatefilelocal(id,texto,color), если я хочу изменить цвет своего элемента ... я перепробовал все ... я поставил скобки file.alumnos[id].{third parameter}= texto но ничего не получилось ... спасибо за помощь.

1 Ответ

0 голосов
/ 09 июля 2020

Вы можете передать ключ в качестве третьего параметра и получить к нему доступ, используя [key]. Таким образом, пример в вашем коде будет:

function updatefilelocal(id, texto, key) {
  // Your code
  file.alumnos[id][key] = texto;
  // Rest of your code
}

, и вы можете изменить цвет или имя, вызвав updatefilelocal с помощью updatefilelocal(id, texto, 'color') или updatefilelocal(id, texto, 'name').

Вот пример, чтобы увидеть, как это работает:

let x = { a: 1, b: 2 };

function changeKeyValue(obj, key, val) {
  obj[key] = val;
}

changeKeyValue(x, 'a', 3); // x = { a: 3, b: 2 }
changeKeyValue(x, 'b', 4); // x = { a: 3, b: 4 }
...