我正在尝试填充图表,因此我将数据分为2个列表以进行此操作。
这是数据:
var data = [{
"id": "622",
"name": "some name",
"boats": {
"637": {
"id": "637",
"name": " Subcat 1",
"translations": null
},
"638": {
"id": "638",
"name": "Subcat 2",
"translations": null
}
},
"image": "73e043a7fae04b55855bede22da6286b"
}];
我正在运行此代码以填充列表:
var chList = [];
var boatList = [];
var boatCount = [];
for (var i = 0; i < data.length; i++) {
var obj = data[i];
var cl = obj.name + " [" + obj.id + "]";
if (obj.boats != null) {
chList.push(cl);
}
if(obj.boats) {
var nme = obj.boats.map( function(item){
return item.name;
});
boatList = boatList.concat(nme);
boatCount.push(nme.length);
}
}
console.log(boatList);
console.log(boatCount);
我的问题是我不断得到:
TypeError:obj.boats.map不是函数
我怎样才能解决这个问题?
注意:数据实际上是这样的:
{
"id": "622",
"name": "some name",
"boats": {
"637": {
"id": "637",
"name": " Subcat 1",
"translations": null
},
"638": {
"id": "638",
"name": "Subcat 2",
"translations": null
}
},
"image": "73e043a7fae04b55855bede22da6286b"
};
但是我在其中添加了[和],以便使用data.length以及列表中也为空的...然后我将这些数据保持原样吗?
最佳答案
问题在于obj.boats
是一个对象,而不是数组,因此没有map
方法。
尝试以下方法:
Object.keys(obj.boats).map(function(k) { return obj.boats[k].name; });
见MDN