2013-04-15 31 views
0

所以我有一个对象,看起来像这样:获取对象的值

Object 
    maddiekeller: Object 
    rickbross: Object 
     firstname:"Rick" 
     lastname:"Bross" 
     firstname:"1234 Fictional Drive" 
     ... 
    __proto__: Object 

,我可以拉任何一个名字出来说:

alert(potentialmodels.rickbross.firstname); 
//Alerts "Rick" 

现在我怎么能存储所有的数组中所有模型的名字?当他们都有不同的名字时,我能够通过它们循环吗?

potentialmodels.*differentfirstname*.firstname 

这里是我正在生成的对象:

$result = mysql_query("SELECT * FROM `potentials`") or die(mysql_error()); 
$rows = array(); 

//retrieve and print every record 
while($r = mysql_fetch_assoc($result)){ 
    $rows[strtolower($r['firstname'].$r['lastname'])] = $r; 
} 

$myJSON = json_encode($rows); 

和我的JavaScript:

var potentialModels = <?php print($myJSON); ?>; 
console.log(potentialModels); 
console.log(potentialModels.rickbross.firstname); 
+2

FYI,[没有作为JSON对象这样的东西(http://benalman.com/news/2010/03/theres-没有这样的 - 事物 - 作为一种JSON /)。你拥有的仅仅是一个物体。即使您在服务器端将数据编码为JSON,但在评估JavaScript时,您只需要一个对象。你的问题根本与JSON无关。 –

+0

是js数组还是php数组,哪一个? – egig

+0

谢谢菲利克斯!我是一个新手。 –

回答

0

您可以使用Object.keys让你的模型数组,你可以得到你的型号名称的数组超出其使用Array.prototype.map的。

实施例:

var potentialmodels = { 
    "maddiekeller": { 
     "firstname":"Maddie", 
     "lastname":"Keller" 
     }, 
    "rickbross": { 
     "firstname":"Rick", 
     "lastname":"Bross" 
    } 
} 

var nameArray = Object.keys(potentialmodels).map(function(model) { 
          return potentialmodels[model].firstname 
         }); 

// nameArray = ["Maddie", "Rick"] 

的jsfiddle例如:http://jsfiddle.net/cgqxe/

0

重新组织你的对象为数值数组:

$result = mysql_query("SELECT * FROM `potentials`") or die(mysql_error()); 
$rows = array(); 

//retrieve and print every record 
while($r = mysql_fetch_assoc($result)){ 
    $rows[] = $r; // numeric array 
} 

$myJSON = json_encode($rows); 

获取名字作为数组:

var result = JSON.parse(yourJSONstring); 
var firstnames = []; 
for (var i = 0; i < result.length; i++) { 
    firstnames.push(result[i].firstname); 
} 
+0

如果仍然像OP那样分配值,那么'potentialModels'将已经是一个数组(不是包含JSON的字符串)。 –