2013-04-15 3 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); 

Получить firstnames как массив:

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

Если вы все еще назначаете такое значение, как это делает OP, то 'потенциалModels' уже будет массивом (а не строкой, содержащей JSON). –

Смежные вопросы