Javascript对象的操作
我的javascript中有一个如下所示的对象:Javascript对象的操作,javascript,jquery,arrays,Javascript,Jquery,Arrays,我的javascript中有一个如下所示的对象: {"data":[{"t":{ "level":"35", "longtitude":"121.050321666667", "latitude":"14.6215366666667", "color":"#040098"}}, {"t":{ "level":"31",
{"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无关。恳求