Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于访问javascript中json键的函数的参数,节点_Javascript_Node.js_Json_Parameter Passing - Fatal编程技术网

用于访问javascript中json键的函数的参数,节点

用于访问javascript中json键的函数的参数,节点,javascript,node.js,json,parameter-passing,Javascript,Node.js,Json,Parameter Passing,我有一个包含10个元素的json,如下所示:{“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) => {

我有一个包含10个元素的json,如下所示:
{“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中的键颜色,很好,它可以工作,但是当我想修改元素的键“name”时,我必须更改名称的颜色,比如:
file.alumnos[id].name=texto
可以,但我要做的是在函数中添加第三个参数:
函数updatefilelocal(id,texto,第三个_参数){…}
更改“name”上的“color”。我将这样调用我的函数:
updatefilelocal(id,texto,name)
如果我想更改元素的名称或
updatefilelocal(id,texto,color)
如果我想更改元素的颜色…我已经尝试了所有…我已经在file.alumnos[id]。{third parameter}=texto中放了括号,但是没有任何效果。。。
谢谢您的帮助。

您可以将键作为第三个参数传入,然后使用
[key]
访问它。因此,代码中的一个示例是:

函数updatefilelocal(id、texto、key){
//你的代码
file.alumnos[id][key]=texto;
//代码的其余部分
}
您可以通过调用
updatefilelocal(id,texto,'color')
updatefilelocal(id,texto,'name')
来选择更改颜色或名称

下面是一个示例,以了解其工作原理:

设x={a:1,b:2};
函数changeKeyValue(对象、键、值){
obj[key]=val;
}
changeKeyValue(x,'a',3);//x={a:3,b:2}
changeKeyValue(x,'b',4);//x={a:3,b:4}

请在此处发布您的json结构。它是一个数组吗?或者一个有这些键/值的对象?{“alumnos”:[{“id”:“1”,“姓名”:“Peter”,“编号”:“A4584837”,“父亲”:“Gerart”,“颜色”:“green”},{“id”:“2”,“姓名”:“Maria”,“编号”:“A4584857”,“父亲”:“pett”,“颜色”:“yellow”},{“id”:“3”,“姓名”:“John”,“编号”:“A4584857”,“父亲”:“Juan”,“颜色”:“green”}等等。)}太棒了!我不知道这条路。非常感谢@JY Loh!!