搜索节点js数组以与变量,返回索引或值进行部分匹配

时间:2017-10-12 21:24:52

标签: arrays node.js search find contains

大家好,我是node和js的新手 - 尝试为一个小的不和谐频道制作一个小机器人,我有点碰壁,无法找到解决方案。

我正在尝试存储用户输入数据并在以后调用它。到目前为止,我将此数据存储为json文件。

document.getElementById('demo1').onclick = myFunction();

看起来像这样:

document.getElementById('demo1').onclick = myFunction;

现在我想根据用户的id重新调用String.X值。这就是我被困的地方。我想我需要读取json文件并将其传输到数组。

我想我成功地将它变成了一个包含以下内容的数组:

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

为...     的console.log(ARR [1]);

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

但我无法弄清楚如何通过用户的id(user_id)来搜索该数组,以找到索引,然后拆分该值,甚至更好地拉取该值。

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

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

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

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]]);}

3 个答案:

答案 0 :(得分:1)

在周杰伦的帮助下,这就是我想出的答案。

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);

其他

此后我发现了一种更简单的方法来完成上述操作,没有fs或创建数组。

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

答案 1 :(得分:0)

您可以使用http://example.com/img/icon/fonts/materialdesignicons-webfont.woff2?v=2.0.46。在您的示例中,它将返回匹配的第一个键/值,如果没有匹配则返回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

答案 2 :(得分:0)

您需要单独推送项目,然后通过数组中的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]);
    }
  }