2016-04-25 45 views
0

假设在“人类”对象中有多个嵌套对象(human1,human2,human3)。在不同数据选项之间循环迭代对象

human: { 
    "human1": { 
     "name" : "John", 
     "sex" : "male", 
     "age" : 18 
    } 

    "human2": { 
     "name" : "Peter", 
     "sex" : "male", 
     "age" : 16 
    } 

    "human3": { 
     "name" : "May", 
     "sex" : "female", 
     "age" : 19 
    } 
} 

而且我有一个名为currentPlayer下面另一个对象,我希望它是一个容器,以便从“human1”,“human2”,或“human3”为不同的目的而使用的数据。

currentPlayer: { 
    "name" : "default", 
    "sex" : "default", 
    "age" : 0 
} 

例子:今天我要currentPlayer是约翰,它会

currentPlayer: { 
    "name" : "John", 
    "sex" : "male", 
    "age" : 18 
} 

然后我想currentPlayer是彼得,有云:

currentPlayer: { 
    "name" : "Peter", 
    "sex" : "male", 
    "age" : 16 
} 

我如何用loop循环迭代currentPlayer的属性值,而不仅仅是一个接一个地键入?谢谢...

+0

这真的不清楚你在问什么?你是问在第一个数据结构中如何用'name:“John”'来查找对象?另外,请显示完整的对象定义,而不仅仅是部分对象定义。您显示为'currentPlayer'的只是某个父对象中的一个属性。 – jfriend00

+0

我想你可能会要求类似jQuery.extend()的东西。在youmightnotneedjquery.com上还有一个非jQuery实现 – JonSG

+0

我想只在我现有的currentPlayer对象中迭代来自human1或human2或human3的属性值,对不起没有解释清楚... –

回答

1

娄代码将遍历这个循环结束人类对象

listofhuman = Object.getOwnPropertyNames(human); 
var currentPlayer; 
for (var objHumanName in listofhuman) { 
    if (listofhuman[objHumanName].Name === "Jonh") { 
     currentPlayer = Object.create(listofhuman[objHumanName]); 
     break; 
    } 
} 

的所有属性,你会得到的人,你惯例的

如果你这样做Object.getOwnPropertyNames(currentPlayer)这将返回数组字符串,它们是对象currentPlayer中的实际键,并且您可以通过访问这些值currentPlayer[arryofProp[0]]

+0

看来我会在currentPlayer中有3个人,如果我执行此代码,我想要的是迭代现有currentPlayer中的属性值,抱歉不清楚解释.. –