Javascript数据列表显示为空,但控制台中没有错误
我用一些数据创建了两个数组 控制台没有给我任何错误,但是列表都是空的 这是数据Javascript数据列表显示为空,但控制台中没有错误,javascript,Javascript,我用一些数据创建了两个数组 控制台没有给我任何错误,但是列表都是空的 这是数据 mydata = { "id": "661", "name": "some name", "description": "some desc", "subcat": { "662": { "id": "662", "name": "sub 1", "translations": null
mydata = {
"id": "661",
"name": "some name",
"description": "some desc",
"subcat": {
"662": {
"id": "662",
"name": "sub 1",
"translations": null
},
"663": {
"id": "663",
"name": "sub 2",
"translations": null
}
},
"image": null
};
代码如下:
chList=[];
thList=[];
thCount=[];
for (var i = 0; i < mydata.length; i++) {
var obj = mydata[i];
var cl = obj.name;
if (obj.subcat != null) {
chList.push(cl);
}
if(obj.subcat) {
if (i < 10) {
var nme = obj.subcat.map( function(item){
return item.name;
console.log(nme);
});
thList = thList.concat(nme);
thCount.push(nme.length);
}
}
}
console.log(thList);
console.log(thCount);
chList=[];
thList=[];
thCount=[];
对于(var i=0;i
问题是thList和thCount都是这样空出来的:[]
如何更正此问题?
mydata。当您试图访问对象mydata
上不存在的length
属性时,未定义长度。因此,循环迭代永远不起作用,因此数组thList,thCount
总是空的
length
属性存在于Javascript中的数组中,当您尝试访问不属于该对象的任何属性时,Javascript返回undefined
如果您试图获取对象的属性,那么可以尝试迭代可枚举属性,如
for (var property in mydata ) {
if (mydata.hasOwnProperty(property)) {
// Rest of your statements
}
}
另外,像var obj=mydata[i]这样的语句代码>在您的情况下不起作用,因为mydata
不是数组。如果将mydata
定义为数组,则语句var obj=mydata[i]代码>可以工作。mydata。当您试图访问对象mydata
上不存在的length
属性时,未定义长度。因此,循环迭代永远不起作用,因此数组thList,thCount
总是空的
length
属性存在于Javascript中的数组中,当您尝试访问不属于该对象的任何属性时,Javascript返回undefined
如果您试图获取对象的属性,那么可以尝试迭代可枚举属性,如
for (var property in mydata ) {
if (mydata.hasOwnProperty(property)) {
// Rest of your statements
}
}
另外,像var obj=mydata[i]这样的语句代码>在您的情况下不起作用,因为mydata
不是数组。如果将mydata
定义为数组,则语句var obj=mydata[i]代码>可以工作。尝试这样做
for (var key in yourobject) {
// and access your data like this
yourobject[key].whatever
}
试试这样做
for (var key in yourobject) {
// and access your data like this
yourobject[key].whatever
}
如果要获取mydata的长度,请使用Object.keys方法
var length = Object.keys(mydata);
如果要获取mydata的长度,请使用Object.keys方法
var length = Object.keys(mydata);
看起来您希望mydata
是一个对象数组,而不仅仅是您展示的对象。如果将所显示的mydata
对象文本包装在数组中,并可能添加其他类似对象,则代码将运行得更好
其次,obj.subcat.map
将不起作用,因为subcat
也不是数组。您应该改为将map
应用于Object.keys(obj.subcat)
,然后通过获得的键访问obj.subcat
通过这两种调整,它可以工作:
//mydata是一个数组
mydata=[{
“id”:“661”,
“名字”:“某个名字”,
“描述”:“一些描述”,
“子类别”:{
"662": {
“id”:“662”,
“名称”:“子1”,
“翻译”:空
},
"663": {
“id”:“663”,
“名称”:“子2”,
“翻译”:空
}
},
“图像”:空
}];
var chList=[];
var thList=[];
var-thCount=[];
对于(var i=0;i console.log(thCount)代码>看起来您希望mydata
是一个对象数组,而不仅仅是您展示的对象。如果将所显示的mydata
对象文本包装在数组中,并可能添加其他类似对象,则代码将运行得更好
其次,obj.subcat.map
将不起作用,因为subcat
也不是数组。您应该改为将map
应用于Object.keys(obj.subcat)
,然后通过获得的键访问obj.subcat
通过这两种调整,它可以工作:
//mydata是一个数组
mydata=[{
“id”:“661”,
“名字”:“某个名字”,
“描述”:“一些描述”,
“子类别”:{
"662": {
“id”:“662”,
“名称”:“子1”,
“翻译”:空
},
"663": {
“id”:“663”,
“名称”:“子2”,
“翻译”:空
}
},
“图像”:空
}];
var chList=[];
var thList=[];
var-thCount=[];
对于(var i=0;i