2015-09-12 74 views
0

我试图创建此对象编程产权“球员”:遗漏的类型错误:无法读取的不确定

var data = { 
    "player0": { 
    "name":  "kahn", 
    "pos":  "gk", 
    "ability": "best", 
    "unsure": 0, 
    "waiting": 1 
    }, 
    "player1": { 
    "name" : "recoba", 
    "pos":  "cmf", 
    "ability": "inter", 
    "unsure": 1, 
    "waiting": 0 
    } 
}; 

这是我的尝试,但我得到的标题显示的错误:

var test; 
test.player.name = "kahn"; 
test.player.pos = "gk"; // enough properties for testing 
console.log(test); 

我该怎么做?

+0

你所说的 “编程” 是什么意思?你想克隆一个对象吗? – PHPglue

+0

没有@PHPglue,在我的应用程序中我会实时获得一些数据,所以在一个循环中,我必须创建一个像我发布的对象。 – gsamaras

回答

4

,直到你创建对象本身不能分配对象属性:

var test = {}; 
test.player = {}; 
test.player.name = "kahn"; 
... 
console.log(JSON.stringify(test)); 

或者:

var test = {}; 

test.player = {name: "kahn", pos: "gk"}; 
console.log(JSON.stringify(test)); 

或者:

var test = []; 

var player1 = {name: "kahn", pos: "gk"}; 
var player2 = {name: "recoba", pos: "cmf"}; 

test.push(player1); 
test.push(player2); 
console.log(JSON.stringify(test)); 

或者:

var test = {}; 

test.player0 = {name: "kahn", pos: "gk"}; 
test.player1 = {name: "recoba", pos: "cmf"}; 

console.log(JSON.stringify(test)); 

注意:后者对应于你的对象结构,有问题。

或者:

var test = {}; 

for (var i = 0; i < 5; i++) { 
    test["player" + i] = {"name": "player " + i}; 
    ... 
} 

console.log(JSON.stringify(test)); 
+1

备注:你不必'串化'进入'console.log'的任何东西。记录复杂的对象是它的优势! – Scott

+0

@ScottKaye,是的,当你使用最新的Firefox /铬调试工具。我喜欢老式的好歌剧11,并在那里控制台打印'[对象对象]'='( – ankhzet

+0

谢谢。但是,我想问另一个问题,请在我的真实代码中我有一个循环,在第一个我将在第二个循环'player1'中填充'player0',等等......你会怎么做?首先要记住的是if/else结构或开关。你还有什么其他的想法吗? – gsamaras

相关问题