检查json是否包含密钥

时间:2020-10-04 20:06:22

标签: javascript json

我想搜索一个JSON文件,以查看它是否包含我要搜索的电子邮件地址(以下代码中的example@mail.com)。但是,它不起作用。

function contains(arr, key, val) {
  for (var i = 0; i < arr.length; i++) {
      if(arr[i][key] === val) return true;
  }
  return false;
}

emailRecord = JSON.parse(req.responseText); //Got this from an XMLHttpRequest.

if(contains(fullEmailRecord, "email", "example@mail.com")) 
{
   console.log("LOGGED IN")
}

JSON:

[
  {
    "email": "example@mail.com"
  },
  {
    "email": "mail@example.com"
  }
]

function contains(arr, key, val) {
  for (var i = 0; i < arr.length; i++) {
      if(arr[i][key] === val) return true;
  }
  return false;
}

const fullEmailRecord = [
  {
    "email": "example@mail.com"
  },
  {
    "email": "mail@example.com"
  }
];

if(contains(fullEmailRecord, "email", "example@mail.com")) 
{
   console.log("LOGGED IN")
}

3 个答案:

答案 0 :(得分:0)

它在代码段中有效,但由于使用了变量fullEmailRecord而不是emailRecord ,因此不适用于原始代码。

答案 1 :(得分:0)

我认为比这简单得多,像这样在字符串而不是json中搜索它:

req.responseText.contains("example@mail.com")

req.responseText.indexOf("example@mail.com") > -1

完全使用:

if (req.responseText.contains("example@mail.com")) {
   console.log("LOGGED IN")
}

答案 2 :(得分:0)

执行以下操作:

arr.map(e => e.email === 'YOUR EMAIL');

如果返回对象,则该对象存在

换句话说,您可以将功能更改为此

function contains(arr, key, val) {
  return arr.map(e => e[key] === val)
}