使用嵌套函数循环遍历对象文字

时间:2016-06-24 17:23:18

标签: javascript loops object-literal for-in-loop

我正在尝试遍历一个对象文字并只选择其中一个键并返回它的值,这将是一个函数。我的问题是,我不能让循环只返回一个值 - 它总是返回所有的值(函数)。我注意到如果我将函数嵌套在对象文字中(参见foo),那么它效果会更好,但仍然没有循环。

Here is the JS fiddle

var functions = {
   blah: blah(),
   foo: function() { console.log("foo"); }
};


for(var key in functions){
   if(functions[key] == 'foo') {
   console.log("hello"); //if functions contains the key 'foo' say hi
  }
}
function blah () {alert("blah")};

functions.foo();

2 个答案:

答案 0 :(得分:2)

您没有检查密钥,而是检查函数的字符串。

for(var key in functions){
    if (key==="foo") {
        console.log("hello");
    }
}

另一种方法是使用Object.keys()

var keys = Object.keys(functions);
if (keys.indexOf("foo")>-1) {
    console.log("hello");
}

答案 1 :(得分:1)

in your condition if(functions[key] == 'foo')

the functions[key] returns a function. the key itself is already a literal that can be compare to 'foo'

var functions = {
   blah: blah(),
   foo: function() { console.log("foo"); }
};


for(var key in functions){
   if(key == 'foo') {
   console.log("hello"); //if functions contains the key 'foo' say hi
  }
}
function blah () {alert("blah")};

functions.foo();