获取嵌套在对象中的值并与变量值进行比较

时间:2016-10-18 19:17:40

标签: javascript object if-statement nested

我有一个由两部分组成的问题。

1)我需要访问嵌套在复杂对象中的唯一值列表。我可以通过console.log输出对象:

console.log(dataStore);

这将输出以下内容(部分):

`Object
    getResponses: function getResponses(ids)
        arguments: null
    
        caller: null
    
        length: 1
    
        name: "getResponses"
    
        prototype: Object
    
        __proto__: function ()
         
        <function scope>
            Closure
                responseCache: Object
                    12345: gr.Response
    
                    12346: gr.Response
                    etc...
    getImg: function (imageId)
    etc... `

我需要一个收集responseCache:12345,12346,12347等下的数值列表的调用。这些值的总量可能非常大。可能是10,在列表中可能是100。

2)我需要创建一个条件语句,用于比较不属于上述对象的变量的值。例如:

variableX = variableXvalue;

if ("variableXvalue" is one of the unique values in "responseCache") {
//then do this
}

不确定这里问题是否重要,但variableX处于循环中,遍历页面上的属性。它遍历页面上所有匹配的标记/属性,并且需要在每次循环时将这些属性值与responseCache值的完整列表进行比较。

感谢您考虑这个问题。

1 个答案:

答案 0 :(得分:0)

让我们看一下如何编写这种代码的示例。

var obj = (function() {
  var responseCache = {
    12345: 12,
    12348: 34,
    12355: 56
  };
  return {
    getResponses: function getResponses(ids) {
      return responseCache[id];
    }
  };
})();
console.log(obj);

如果您在控制台中运行该代码,您将能够向下钻取并查看与您所看到的输出基本相同的输出。现在,您如何直接访问responseCache?你不能。它实际上是私有的,只能从该闭包中直接访问。外部代码无法直接访问该变量。如果obj上的任何函数使用它,则只能间接访问它。