【问题标题】:find key exist in json onject查找密钥存在于 json 对象中
【发布时间】:2018-06-22 19:53:15
【问题描述】:
"questions": [{
        "_id": "5b2bc4f6f1dacd2b0ca65bca",
        "updatedAt": "2018-06-21T15:32:06.237Z",
        "createdAt": "2018-06-21T15:32:06.237Z",
        "title": "What is Full form of RC",
        "answer": "opt4",
        "testId": "5b2bbccd8b30aa2a64327645",
        "__v": 0,
        "opt4": "Registeraction Certificate",
        "opt3": "Requirement Certificate",
        "opt2": "Registeration Common",
        "opt1": "Registeration Counter",
        "solution": "RC means Registeraction Certificate"
    },
    {
        "_id": "5b2bc4faf1dacd2b0ca65bcd",
        "updatedAt": "2018-06-21T15:32:10.566Z",
        "createdAt": "2018-06-21T15:32:10.566Z",
        "title": "What is Full form of RC",
        "answer": "opt4",
        "testId": "5b2bbccd8b30aa2a64327645",
        "__v": 0,
        "opt4": "Registeraction Certificate",
        "opt3": "Requirement Certificate",
        "opt2": "Registeration Common",
        "opt1": "Registeration Counter",
        "solution": "RC means Registeraction Certificate"
    }
]

以上是我在 ques.map() 中使用的数据

var ans = {
    "5b2bc4f6f1dacd2b0ca65bca": "opt4",
    "5b2bc4faf1dacd2b0ca65bcd": "opt2",
    "5b2bc4fcf1dacd2b0ca65bcf": "opt2",
    "5b2bc4fff1dacd2b0ca65bd1": "opt4",
    "5b2bc501f1dacd2b0ca65bd3": "opt2",
    "5b2bc504f1dacd2b0ca65bd6": "opt2",
    "5b2bc5facdf99b18a0b9722b": "opt2",
    "5b2bc6295865b528dceeb6b7": "opt2",
    "5b2bc6ba7f32b21f7c68e57f": "opt2",
    "5b2bc6bc7f32b21f7c68e580": "opt2"
}

我需要查找上面的 json 对象中是否存在密钥,但我无法得到它。 它总是返回 false。

console.log(ans);
ques.map(function(item) {
    var thisIs = ans.hasOwnProperty(item._id)
    console.log(thisIs);
})

它总是返回 false

【问题讨论】:

  • 你想要ans中存在_id的问题吗?

标签: javascript jquery node.js


【解决方案1】:

您可以使用 for 循环匹配对象​​中的键。

ques.forEach((item)=>{
  for (var key in ans) {
    if (key == item._id){
      return true;
    }
  }
});

【讨论】:

  • 你没有从 map() 返回任何东西 - 使用 forEach() 代替。你的 for 循环也可以用另一个 forEach() 代替,这样你就可以保持代码简洁。
  • map 不是循环函数`
  • 谢谢,已更新!我最初专注于匹配密钥。我没注意到。
  • @Prachi 不。它返回错误
  • 连if语句都不进?
【解决方案2】:

试试这个更新的代码

没有jquery (down voter)

使用

Object.keys(ques).map(function(key, index) {
  Object.keys(ques[key]).map(function(key1, index1) {
    var thisis = ans.hasOwnProperty(ques[key][key1]['_id']);
    console.log(thisis);
  });
 });

var ques = {
  "questions": [{
      "_id": "5b2bc4f6f1dacd2b0ca65bca",
      "updatedAt": "2018-06-21T15:32:06.237Z",
      "createdAt": "2018-06-21T15:32:06.237Z",
      "title": "What is Full form of RC",
      "answer": "opt4",
      "testId": "5b2bbccd8b30aa2a64327645",
      "__v": 0,
      "opt4": "Registeraction Certificate",
      "opt3": "Requirement Certificate",
      "opt2": "Registeration Common",
      "opt1": "Registeration Counter",
      "solution": "RC means Registeraction Certificate"
    },
    {
      "_id": "5b2bc4faf1dacd2b0ca65bcd",
      "updatedAt": "2018-06-21T15:32:10.566Z",
      "createdAt": "2018-06-21T15:32:10.566Z",
      "title": "What is Full form of RC",
      "answer": "opt4",
      "testId": "5b2bbccd8b30aa2a64327645",
      "__v": 0,
      "opt4": "Registeraction Certificate",
      "opt3": "Requirement Certificate",
      "opt2": "Registeration Common",
      "opt1": "Registeration Counter",
      "solution": "RC means Registeraction Certificate"
    }
  ]
}


var ans = {
  "5b2bc4f6f1dacd2b0ca65bca": "opt4",
  "5b2bc4faf1dacd2b0ca65bcd": "opt2",
  "5b2bc4fcf1dacd2b0ca65bcf": "opt2",
  "5b2bc4fff1dacd2b0ca65bd1": "opt4",
  "5b2bc501f1dacd2b0ca65bd3": "opt2",
  "5b2bc504f1dacd2b0ca65bd6": "opt2",
  "5b2bc5facdf99b18a0b9722b": "opt2",
  "5b2bc6295865b528dceeb6b7": "opt2",
  "5b2bc6ba7f32b21f7c68e57f": "opt2",
  "5b2bc6bc7f32b21f7c68e580": "opt2"
}


//console.log(ques);
Object.keys(ques).map(function(key, index) {
  Object.keys(ques[key]).map(function(key1, index1) {
    var thisis = ans.hasOwnProperty(ques[key][key1]['_id']);
    console.log(thisis);
  });

});

【讨论】:

  • 肯定有不需要jQuery的解决方案
  • ques.map 不是循环函数
  • for forEach while 呢?
  • 你好先生@Itamar 请检查我的代码没有jquery
  • 不需要地图,也不需要循环功能
【解决方案3】:

使用@dr-strange 答案作为此答案的基础 不使用 map 或任何相关内容。

这是基本代码

Object.keys(ques).forEach(function(key) { //loop over upper level keys
  Object.keys(ques[key]).forEach(function(innerKey) { //loop second level keys
    var thisIs = ans.hasOwnProperty(ques[key][innerKey]['_id']); //compare keys
    console.log(thisIs);
    return; // break loop
  });

});

var ques = {
  "questions": [{
      "_id": "5b2bc4f6f1dacd2b0ca65bca",
      "updatedAt": "2018-06-21T15:32:06.237Z",
      "createdAt": "2018-06-21T15:32:06.237Z",
      "title": "What is Full form of RC",
      "answer": "opt4",
      "testId": "5b2bbccd8b30aa2a64327645",
      "__v": 0,
      "opt4": "Registeraction Certificate",
      "opt3": "Requirement Certificate",
      "opt2": "Registeration Common",
      "opt1": "Registeration Counter",
      "solution": "RC means Registeraction Certificate"
    },
    {
      "_id": "5b2bc4faf1dacd2b0ca65bcd",
      "updatedAt": "2018-06-21T15:32:10.566Z",
      "createdAt": "2018-06-21T15:32:10.566Z",
      "title": "What is Full form of RC",
      "answer": "opt4",
      "testId": "5b2bbccd8b30aa2a64327645",
      "__v": 0,
      "opt4": "Registeraction Certificate",
      "opt3": "Requirement Certificate",
      "opt2": "Registeration Common",
      "opt1": "Registeration Counter",
      "solution": "RC means Registeraction Certificate"
    }
  ]
}


var ans = {
  "5b2bc4f6f1dacd2b0ca65bca": "opt4",
  "5b2bc4faf1dacd2b0ca65bcd": "opt2",
  "5b2bc4fcf1dacd2b0ca65bcf": "opt2",
  "5b2bc4fff1dacd2b0ca65bd1": "opt4",
  "5b2bc501f1dacd2b0ca65bd3": "opt2",
  "5b2bc504f1dacd2b0ca65bd6": "opt2",
  "5b2bc5facdf99b18a0b9722b": "opt2",
  "5b2bc6295865b528dceeb6b7": "opt2",
  "5b2bc6ba7f32b21f7c68e57f": "opt2",
  "5b2bc6bc7f32b21f7c68e580": "opt2"
}



Object.keys(ques).forEach(function(key) {
  Object.keys(ques[key]).forEach(function(innerKey) {
    var thisIs = ans.hasOwnProperty(ques[key][innerKey]['_id']);
    console.log(thisIs);
    return;
  });
   });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    • 2021-03-02
    • 2023-01-19
    相关资源
    最近更新 更多