search节点js数组与variables,返回索引或值进行部分匹配

大家好我是新来的节点和JS – 试图做一个小的不协调的通道的机器人,我有点碰壁,找不到解决scheme。

我正在尝试存储用户input数据并在稍后调用它。 到目前为止,我有这个存储数据作为JSON文件。

data[user_id] = value_set var out_data = JSON.stringify(data); fs.writeFile('users.json', out_data); 

看起来像这样:

 {"35978432146597841":"String.1","32146879124653147":"String.2"} 

现在我想根据用户的id来回想一下String.X的值。 而这就是我卡住的地方。 我想我需要读取JSON文件并将其传递给一个数组。

我想我成功地使它成为一个arrays,具有以下内容:

 var in_data = fs.readFileSync('users.json'); var data = JSON.parse(in_data); var arr = [] for(var i in data){ arr.push([i, data [i]]);} 

作为… console.log(arr [1]);

显示:['32146879124653147','String.2']

但我不知道如何通过用户的id(user_id)search该数组来find索引,然后拆分值,或者甚至更好地拉取值。

我试图通过user_idfind“String.X”的所有内容都失败了。 那么,如果我只知道'32146879124653147',我需要做些什么来拉动'String.2'。

任何帮助将不胜感激。 谢谢。

 var fs = require("fs"); var in_data = fs.readFileSync('users.json'); var data = JSON.parse(in_data); var arr = []; for(var i in data){ arr.push({ User:i, Input:data [i] }); } var value = arr.find(x => x.User === id); var f_value = value.Input; console.log(f_value); 

要么

 const userfile = require("./users.json"); var f_value = userfile[userID]; 

在Jay的帮助下,这是我想出的答案。

 var fs = require("fs"); var in_data = fs.readFileSync('users.json'); var data = JSON.parse(in_data); var arr = []; for(var i in data){ arr.push({ User:i, Input:data [i] }); } var value = arr.find(x => x.User === userID); var f_value = value.Input; console.log(f_value); 

其他

我已经find了一个更简单的方法来完成上述,没有FS,或创build一个数组。

 const userfile = require("./users.json"); var f_value = userfile[userID]; 

您需要分别推送项目,然后在数组中跳过2个元素。

 var fs = require("fs"); var in_data = fs.readFileSync('users.json'); var data = JSON.parse(in_data); var arr = [] for(var i in data){ arr.push(i); arr.push(data[i]); } console.log("Printing arr..."); for(var i=0; i<arr.length; i++) { console.log("arr[" + i + "]= " + arr[i]); } // Check if 32146879124653147 is found console.log("Checking 32146879124653147..."); for (var i=0; i<arr.length; i+=2) { if (arr[i] === "32146879124653147") { console.log("Found " + arr[i+1]); } } 

你可以使用find() 。 在你的例子中,它将返回匹配的第一个键/值,如果不匹配则返回undefined。

 var in_data = fs.readFileSync('users.json'); var data = JSON.parse(in_data); let obj = {} for(var i in data){ obj[i]:data [i]; let value = obj.find(value => id) //if id = '32146879124653147' // then the 32146879124653147: 'String.2' key/value would be returned