2013-04-15 32 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的字符串)。 –