Javascript对象的操作

Javascript对象的操作,javascript,jquery,arrays,Javascript,Jquery,Arrays,我的javascript中有一个如下所示的对象: {"data":[{"t":{ "level":"35", "longtitude":"121.050321666667", "latitude":"14.6215366666667", "color":"#040098"}}, {"t":{ "level":"31",

我的javascript中有一个如下所示的对象:

{"data":[{"t":{
                "level":"35",
                "longtitude":"121.050321666667",
                "latitude":"14.6215366666667",
                "color":"#040098"}},
         {"t":{
                "level":"31",
                "longtitude":"121.050316666667",
                "latitude":"14.621545",
                "color":"#040098"}},
         {"t":{
                "level":"29",
                "longtitude":"121.050323333333",
                "latitude":"14.62153",
                "color":"#040098"}},
//  .....
我想做的是迭代我的对象的内容,这样我就能够将它们独立地推送到各自的数组中。 我有一个经度、纬度、颜色和级别的数组

因此,我尝试了以下方法:

var size = 0, key;
for (key in result) {
    if (result.hasOwnProperty(key)) size++;
    alert(result.data[size]);
}
-->但这只会提醒我“[对象]”

-->这给了我未定义的结果[键]

通过这些代码,我已经检查过我的对象的大小只有1

var size = 0, key;
for (key in result) {
    if (result.hasOwnProperty(key)) size++;
}
alert(size);        
我相信只有“数据”被读取。而“数据”中的其他内容则被忽略

我读过、和,但它们似乎都处理不同的对象结构。感谢您在advanced中的帮助

更新 如果我没有弄错的话,我已经使用console.log()确认只提取第一个属性

t
    Object { level="35", longtitude="121.0508", latitude="14.6204083333333", more...}
color       "#040098"
latitude    "14.6204083333333"
level       "35"
longtitude  "121.0508"
我试过这个

for (key in result) {
            if (result.hasOwnProperty(key)) size++;
            console.log(result.data[size]['level']);
        }
-->但它说的是未定义的

基于我的对象的结构

data:[{"t":{'others'},'others'...]

我该如何读取“数据”中的所有内容?每个“数据”都有“t”。

更新:不建议在构造中使用
for…对数组进行迭代。另一种方法是常规for循环(当然,每种方法都有各自的优点):

注意:对于收集数组中对象的属性,或者本地js数组映射,这是一个整洁、有用的替代方法

var latitudes = $.map( result.data, function(n){
    return n['t']['latitude'];
});
// and so on...

更新:不建议在
构造中使用
for…来迭代数组。另一种方法是常规for循环(当然,每种方法都有各自的优点):

注意:对于收集数组中对象的属性,或者本地js数组映射,这是一个整洁、有用的替代方法

var latitudes = $.map( result.data, function(n){
    return n['t']['latitude'];
});
// and so on...

假设
result
是您的对象,这应该只是在
数据
数组上迭代的问题:

for (var i = 0; i < result.data.length; ++i) {
    console.log(result.data[i].t.latitude);
    ...
}
for(变量i=0;i
假设
结果
是您的对象,这应该只是迭代
数据
数组的问题:

for (var i = 0; i < result.data.length; ++i) {
    console.log(result.data[i].t.latitude);
    ...
}
for(变量i=0;i
请参见,它保留了
hasOWnProperty
(这很重要),而您拼写错误的“经度”则不是

var data = input.data,
    result = {level: [], longtitude: [], latitude: [], color: []};

for (var i = 0, n = data.length; i < n; i += 1) {
    var info = data[i].t;
    for (var property in info) {
        if (info.hasOwnProperty(property)) {
            result[property].push(info[property]);
        }
    }
}

console.log(result.level);
console.log(result.latitude);
console.log(result.longtitude);
console.log(result.color);
var data=input.data,
结果={级别:[],长度:[],纬度:[],颜色:[];
对于(变量i=0,n=data.length;i
这要求结果数组在您的输入数组中实际具有属性,但您可以根据需要添加错误处理。

请参阅,它保留了
hasOWnProperty(这很重要),而您拼写错误的“longitude”(这不重要)

var data = input.data,
    result = {level: [], longtitude: [], latitude: [], color: []};

for (var i = 0, n = data.length; i < n; i += 1) {
    var info = data[i].t;
    for (var property in info) {
        if (info.hasOwnProperty(property)) {
            result[property].push(info[property]);
        }
    }
}

console.log(result.level);
console.log(result.latitude);
console.log(result.longtitude);
console.log(result.color);
var data=input.data,
结果={级别:[],长度:[],纬度:[],颜色:[];
对于(变量i=0,n=data.length;i

这要求结果数组在输入数组中实际具有属性,但您可以根据需要添加错误处理。

这并不难做到,如下所示。但是,为什么要将像
t
这样的有用对象转换成这样的数组呢

var levels = [], longitudes= [], latitudes = [], colors = [];
var result = {"data":[{"t":{
            "level":"35",
            "longtitude":"121.050321666667",
            "latitude":"14.6215366666667",
            "color":"#040098"}},
     {"t":{
            "level":"31",
            "longtitude":"121.050316666667",
            "latitude":"14.621545",
            "color":"#040098"}},
     {"t":{
            "level":"29",
            "longtitude":"121.050323333333",
            "latitude":"14.62153",
            "color":"#040098"}}
]};

var data = result.data;
var i, len, t;

for (i = 0, len = data.length; i < len; i++) {
    t = data[length].t;
    levels[i] = t.level;
    longitudes[i] = t.longtitude;
    latitudes[i] = t.latitude;
    colors[i] = t.color;   
}
var级别=[]、经度=[]、纬度=[]、颜色=[];
var result={“data”:[{“t”:{
“级别”:“35”,
“长期性”:“121.050321666667”,
“纬度”:“14.621536667”,
“颜色”:“#040098”},
{“t”:{
“级别”:“31”,
“长”:“121.050316666667”,
“纬度”:“14.621545”,
“颜色”:“#040098”},
{“t”:{
“级别”:“29”,
“长性”:“121.05032333333”,
“纬度”:“14.62153”,
“颜色”:“#040098”}
]};
var数据=结果数据;
变量i,len,t;
对于(i=0,len=data.length;i
这并不难做到,如下所示。但是,为什么要将像
t
这样的有用对象转换成这样的数组呢

var levels = [], longitudes= [], latitudes = [], colors = [];
var result = {"data":[{"t":{
            "level":"35",
            "longtitude":"121.050321666667",
            "latitude":"14.6215366666667",
            "color":"#040098"}},
     {"t":{
            "level":"31",
            "longtitude":"121.050316666667",
            "latitude":"14.621545",
            "color":"#040098"}},
     {"t":{
            "level":"29",
            "longtitude":"121.050323333333",
            "latitude":"14.62153",
            "color":"#040098"}}
]};

var data = result.data;
var i, len, t;

for (i = 0, len = data.length; i < len; i++) {
    t = data[length].t;
    levels[i] = t.level;
    longitudes[i] = t.longtitude;
    latitudes[i] = t.latitude;
    colors[i] = t.color;   
}
var级别=[]、经度=[]、纬度=[]、颜色=[];
var result={“data”:[{“t”:{
“级别”:“35”,
“长期性”:“121.050321666667”,
“纬度”:“14.621536667”,
“颜色”:“#040098”},
{“t”:{
“级别”:“31”,
“长”:“121.050316666667”,
“纬度”:“14.621545”,
“颜色”:“#040098”},
{“t”:{
“级别”:“29”,
“长性”:“121.05032333333”,
“纬度”:“14.62153”,
“颜色”:“#040098”}
]};
var数据=结果数据;
变量i,len,t;
对于(i=0,len=data.length;i
Hint使用
console.log()
,而不是
alert()
进行调试。与php或cakephp无关。请只使用与问题相关的标记。PhpMyCoder-->oops对不起,我在使用javascript以及cakephp和php。我错了,马特·鲍尔好吧,我试试。。无论结果是什么,我都会在这里发帖:)提示使用
console.log()
,而不是
alert()
进行调试。与php或cakephp无关。恳求