JavaScript:如何迭代一个对象的属性,并针对另一对象的动态属性进行测试
JavaScript: How to iterate over properties of an object and test against a dynamic property of another object
我有一个对象
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/
相关文章:
- 为什么我可以在Array属性对象中找到Javascript Array for Each方法
- 使用onclick调用属性对象函数
- 嵌套为..in 循环,列出多维对象的属性(对象)
- 动态属性对象 - JSON
- 在不使用隔离范围angularjs自定义指令的情况下获取属性对象
- 通过属性传递属性/对象.Javascript
- Javascript:属性/对象的类型
- 访问JSON中的属性(对象)
- 属性对象Javascript不是用Jquery Deferred设置的
- 无法读取属性'#<对象>'未定义的获取错误
- Twitter中多属性对象的子字符串匹配
- 无法设置'data'属性'对象'标记.(只IE8)
- 更新数据属性对象属性值
- 将属性对象的选定对象从原型推入数组
- 将单个属性对象字面量的数组转换为仅包含其值的数组的最佳方法
- 寻找一种更简单的方法来检查是否多个属性&对象中的方法是未定义的
- 主干模型:带有get方法的空属性,但在属性对象中
- 如何赋值给"text"someText"属性对象在动能js
- Angularjs的数据绑定与数据属性对象
- 如何将一个嵌套的javascript对象转换为只有一级属性对象