JavaScript:如何迭代一个对象的属性,并针对另一对象的动态属性进行测试

JavaScript: How to iterate over properties of an object and test against a dynamic property of another object

本文关键字:属性 对象 动态 测试 何迭代 迭代 JavaScript 一个对象      更新时间:2023-09-26

我有一个对象

var foo = { jon : {age: 'old',   feeling: 'sad' },
            jack: {age: 'young', feeling: 'happy'}
          };

foo的成员是动态创建的;对象也是如此。

var bar = { name: 'jon' };

我想看看jon是否是foo的成员。我一定是做错了什么事。

function isMember(bar) {
    for(prop in foo) {
        if (foo[prop] === bar.name){
            return true;
            break;
        }
    }
    return false;
};

总是返回true!!

这是上面的一个工作版本:

foo = { jon : {age: 'old',   feeling: 'sad' },
        jack: {age: 'young', feeling: 'happy'}
       };
bar = { name: 'jon' };
function isMember(bar) {
    for(prop in foo) {
        console.log([prop, foo[prop], bar.name, ]);
        if (prop === bar.name){
            return true;
        }
    }
    return false;
 };

console.log(['ismember', isMember(bar)]);

实例:

  • http://jsfiddle.net/BB4Tt/

尝试将bar.name更改为例如jon1,以查看其行为。看看你的控制台窗口,看看它输出了什么,这将有助于你了解它到底做了什么以及哪里出了问题。

希望这能有所帮助。

它太简单了,几乎不值得使用一个函数:

console.log(bar.name in foo);

实时演示

一旦清除了语法,我认为您正在寻找对象的内置hasOwnProperty方法。

var foo = {
    "jon": {
        "age": "old",
        "feeling": "sad"
    },
    "jack": {
        "age": "young",
        "feeling": "happy"
    }
};
var bar = {
    "name": "jon"
};
function isMember(prop) {
    return foo.hasOwnProperty(prop);
}
console.log(isMember(bar.name));

小提琴演奏:http://jsfiddle.net/Dwr2M/