【问题标题】:NodeJS: How to check if a key exists in an array of JSON objectNodeJS:如何检查JSON对象数组中是否存在键
【发布时间】:2017-10-16 06:09:24
【问题描述】:

我有一个 JSON 对象数组imdb,我想检查一个键是否存在。我尝试了几种不同的方法,但都没有显示正确的结果。我查看了this post,但没有帮助。下面的代码

var imdb = [{"123":"hi"}, {"234":"hello"}];  //array of JSON object
var valEventTime = 123;                      //key I want to find if exists


//approach 1
function getValueByKey(key, data) {
    var i, len = data.length;

    for (i = 0; i < len; i++) {
        if (data[i] && data[i].hasOwnProperty(key)) {
            return data[i][key];
        }
    }

    return -1;
}

if(getValueByKey(valEventTime, imdb) > -1){
  console.log("Yes");

}
else {
  console.log("NOT")
}


//approach 2
if (imdb[valEventTime]) {
    console.log("Yes");
} else {
    console.log("NOT")
}

//approach 3
var keys=Object.keys(imdb)
for(var i=0;i<keys.length;i++){
     if(keys[i]==valEventTime)
     {//check your key here
       console.log("Yes")
     }
     else console.log("NOT")
}

即使我正在搜索已经存在的密钥 (123),输出也始终显示 NOT。请建议。

【问题讨论】:

  • 能否更新问题中的 json 数据?
  • @Chandru 不确定您的意思?我已经有了 JSON 数据 var imdb = [{"123":"hi"}, {"234":"hello"}];

标签: javascript arrays json node.js


【解决方案1】:

您的解决方案的问题是您正在尝试搜索一个整数键,而您的 json 键是一个字符串。

var imdb = [{"123":"hi"}, {"234":"hello"}]; // 键是字符串

var valEventTime = 123; // 键是整数

var imdb = [{"123":"hi"}, {"234":"hello"}]; 
var valEventTime = "123";  

var obj = imdb.some((val) => {
	return Object.keys(val).includes(valEventTime);
})

console.log(obj);

【讨论】:

    【解决方案2】:

    您可以使用Array.some() 来确定数组是否包含值。对于您想要使用Array.includes() 函数的每个项目来检查您的变量,以查看每个条目上从Object.keys() 返回的项目。在您的示例中,您的变量是一个整数,键是一个字符串 - 您可能希望在匹配时更加具体。

    var imdb = [{"123":"hi"}, {"234":"hello"}];
    var valEventTime = "123"; // use a string to match the keys
    
    // use Array.some() to loop through each item and short circuit when we return true
    var hasKey = imdb.some(function(movie) {
      // get the object keys as an array and see if that array contains your variable
      // returning true will also return true from Array.some()
      return Object.keys(movie).includes(valEventTime);
    });
    

    【讨论】:

      猜你喜欢
      • 2020-07-11
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      • 2020-05-02
      • 1970-01-01
      • 2013-09-26
      • 1970-01-01
      相关资源
      最近更新 更多