【问题标题】:making nested objects array and checking if the key exists in objs制作嵌套对象数组并检查对象中是否存在键
【发布时间】:2016-03-01 08:48:37
【问题描述】:

我正在尝试检查键是否存在于对象数组中。每次将现有密钥传递给我的函数时,我都会收到 false

var connect_clients = [];
connect_clients.push({
  'a': val
});

function lookup(name) {
  for (var i = 0, len = connect_clients.length; i < len; i++) {
    if (connect_clients[i].key === name)
      return true;
  }
  return false;
}

console.log(lookup('a'));

有什么问题吗?

【问题讨论】:

  • val 是什么? .key 来自哪里?
  • val 是动态 var 让我们说 b 和 key 来自循环里面应该是 a

标签: javascript node.js javascript-objects


【解决方案1】:

connect_clients[i].key 指的是名为key 的实际属性,而不是对象的键。

对于这种情况,您可以使用Object.keys 获取对象的键数组,并使用Array.prototype.some 确保至少有一个对象具有键。例如,

function lookup(name) {
  return connect_clients.some(function(client) {
    return Object.keys(client).indexOf(name) !== -1;
  });
}

【讨论】:

    【解决方案2】:

    使用 Object.keys() 获取对象的键。

    var val = 'val';
    var connect_clients = [];
    
    connect_clients.push({
      'a': val
    });
    
    function lookup(keyName) {
        var i;
    
        for ( i = 0; i < connect_clients.length; i++) {
            var keys = Object.keys(connect_clients[i]);
    
            if(keys.indexOf(keyName) !== -1) {
                return true;
            }
        }
    
        return false;
    }
    
    console.log(lookup('a'));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-26
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 2020-06-18
      • 1970-01-01
      • 2020-02-11
      相关资源
      最近更新 更多