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);
4

2 回答 2

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);
}
于 2013-04-15T09:55:22.260 回答
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/

于 2013-04-15T10:05:52.443 回答