【问题标题】:checking if the data is available in json object检查数据是否在 json 对象中可用
【发布时间】:2021-07-13 19:06:45
【问题描述】:

我有一个名为answers的以下数据

{ author: 
  { 
   id: 
   username:  
  },
  _id: 
   answer: 
}
{ author: 
  { 
   id: 
   username:  
  },
  _id: 
   answer: 
}......

有什么方法可以让我使用arrays.contains("username"),而无需真正遍历所有这些并检查其中一个?

当我<%=answers%> 得到上述结果时。但我想检查特定用户名是否有任何答案。

我需要answers[author].username.contains("username")之类的东西

【问题讨论】:

    标签: javascript node.js arrays json ejs


    【解决方案1】:

    因为你有错误的 JSON

    这是一个例子:

    //Array
    let array = [{author:{id:123,username:'abc'},_id:{answer:'wwww'}},{author:{id:456,username:'xxx'},_id:{answer:'wwwwe'}}];
    let username = 'abc'
    let user = array.find(value =>value.author.username === username);
    //now your username contains object containing {author:{id:123,username:'abc'},_id:{answer:'wwww'}}
    let answer = user._id.answer ; // 'wwww'
    let filteredItems = array.filter(value => { return value._id.answer === answer });
    //will return matched array.[{author:{id:123,username:'abc'},_id:{answer:'wwww'}}]
    

    //Array
    let array = [{author:{id:123,username:'abc'},_id:{answer:'wwww'}},{author:{id:456,username:'xxx'},_id:{answer:'wwww'}}];
    let username = 'abc'
    let user = array.find(value =>value.author.username === username);
    console.log("User => "+ JSON.stringify(user))
    let answer = user._id.answer ;
    console.log("Answer by "+user.author.username+" => "+ answer)
    let search = array.filter(value => { return value._id.answer === answer });
    search.forEach((v)=>{ 
      console.log(`${v.author.username} have matched answer`)
    })

    【讨论】:

      【解决方案2】:

      您可以正则表达式 JSON 源,但使用 map 或 filter 将是另一个简单的解决方案。

      【讨论】:

      • 我想在 ejs 文件中进行。检查用户是否回答了问题
      猜你喜欢
      • 2012-05-22
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-24
      • 1970-01-01
      相关资源
      最近更新 更多